package br.com.centralit.citgerencial.negocio;
import java.awt.Color;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.net.MalformedURLException;
import java.sql.Date;
import java.sql.Timestamp;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import org.apache.log4j.Logger;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.AxisLocation;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.labels.ItemLabelAnchor;
import org.jfree.chart.labels.ItemLabelPosition;
import org.jfree.chart.labels.StandardCategoryItemLabelGenerator;
import org.jfree.chart.labels.StandardPieSectionLabelGenerator;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PiePlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.renderer.category.BarRenderer;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.data.general.DefaultPieDataset;
import org.jfree.ui.TextAnchor;
import br.com.centralit.citcorpore.util.Enumerados.TipoDate;
import br.com.centralit.citcorpore.util.WebUtil;
import br.com.centralit.citgerencial.bean.GerencialFieldDTO;
import br.com.centralit.citgerencial.bean.GerencialGroupDTO;
import br.com.centralit.citgerencial.bean.GerencialInfoGenerateDTO;
import br.com.centralit.citgerencial.bean.GerencialItemInformationDTO;
import br.com.centralit.citgerencial.bean.GerencialItemPainelDTO;
import br.com.centralit.citgerencial.bean.GerencialOptionDTO;
import br.com.centralit.citgerencial.bean.GerencialOptionsDTO;
import br.com.centralit.citgerencial.bean.GerencialPainelDTO;
import br.com.centralit.citgerencial.bean.GerencialParameterDTO;
import br.com.centralit.citgerencial.integracao.GerencialGenerateDao;
import br.com.centralit.citgerencial.pdf.EndPageControl;
import br.com.centralit.citgerencial.pdf.EndPageControlBuffer;
import br.com.centralit.citgerencial.pdf.EndPageGerencialControl;
import br.com.citframework.dto.Usuario;
import br.com.citframework.excecao.LogicException;
import br.com.citframework.excecao.ServiceException;
import br.com.citframework.service.CrudServiceImpl;
import br.com.citframework.util.Constantes;
import br.com.citframework.util.Html2Pdf;
import br.com.citframework.util.Reflexao;
import br.com.citframework.util.UtilDatas;
import br.com.citframework.util.UtilFormatacao;
import br.com.citframework.util.UtilI18N;
import br.com.citframework.util.UtilStrings;
import com.lowagie.text.BadElementException;
import com.lowagie.text.Document;
import com.lowagie.text.DocumentException;
import com.lowagie.text.Element;
import com.lowagie.text.ExceptionConverter;
import com.lowagie.text.Font;
import com.lowagie.text.Image;
import com.lowagie.text.PageSize;
import com.lowagie.text.Paragraph;
import com.lowagie.text.Phrase;
import com.lowagie.text.Rectangle;
import com.lowagie.text.pdf.PdfImportedPage;
import com.lowagie.text.pdf.PdfPCell;
import com.lowagie.text.pdf.PdfPTable;
import com.lowagie.text.pdf.PdfReader;
import com.lowagie.text.pdf.PdfWriter;
@SuppressWarnings({"rawtypes","unchecked","unused"})
public class GerencialGenerateEjb extends CrudServiceImpl implements GerencialGenerate {
private static final Logger LOGGER = Logger.getLogger(GerencialGenerateEjb.class);
private static final Color COR_FUNDO = Color.WHITE;
private static final Color COR_TITULO = Color.BLACK;
private String caminhoRelativoAuxiliar = "";
private GerencialGenerateDao dao;
protected GerencialGenerateDao getDao() {
if (dao == null) {
dao = new GerencialGenerateDao();
}
return dao;
}
/**
* --------------------------------------------------------------------------------------------------------------------------------------- generate
*/
public Object generate(GerencialItemInformationDTO gerencialItemDto, Usuario usuario, GerencialInfoGenerateDTO infoGenerate, GerencialItemPainelDTO gerencialItemPainelAuxDto,
GerencialPainelDTO gerencialPainelDto, HttpServletRequest request) throws ServiceException {
try {
Collection<GerencialParameterDTO> gerencialParameter = gerencialPainelDto.getListParameters();
for (GerencialParameterDTO gerencial : gerencialParameter) {
gerencial.setDescription(UtilI18N.internacionaliza(request, gerencial.getDescription()));
}
gerencialPainelDto.setListParameters(gerencialParameter);
if (gerencialItemDto.getType().equalsIgnoreCase("SQL")) {
Collection colParmsUtilizadosNoSQL = new ArrayList();
String sql = trataSQL(gerencialItemDto.getGerencialSQL().getSql(), usuario, colParmsUtilizadosNoSQL);
List listParms = trataParameters(infoGenerate.getHashParametros(), usuario, colParmsUtilizadosNoSQL, gerencialPainelDto.getListParameters());
List listRetorno = null;
if (listParms != null) {
listRetorno = (List) getDao().executaSQL(sql, listParms.toArray());
} else {
listRetorno = (List) getDao().executaSQL(sql, null);
}
return generateRetorno(listRetorno, gerencialItemDto, infoGenerate, usuario, gerencialItemPainelAuxDto, colParmsUtilizadosNoSQL, infoGenerate.getHashParametros(),
gerencialPainelDto.getListParameters(), gerencialPainelDto, request);
} else if (gerencialItemDto.getType().equalsIgnoreCase("CLASS_GENERATE_SQL")) {
String sql = "";
Class classeExecutar = Class.forName(gerencialItemDto.getClassExecute());
if (classeExecutar != null) {
Object objetoClasseExecutar = classeExecutar.newInstance();
Method metodo = Reflexao.findMethod("generateSQL", objetoClasseExecutar);
if (metodo != null) {
Object[] param = new Object[] { infoGenerate.getHashParametros(), gerencialPainelDto.getListParameters() };
Object retorno = metodo.invoke(objetoClasseExecutar, param);
sql = (String) retorno;
}
}
Collection colParmsUtilizadosNoSQL = new ArrayList();
sql = trataSQL(sql, usuario, colParmsUtilizadosNoSQL);
List listParms = trataParameters(infoGenerate.getHashParametros(), usuario, colParmsUtilizadosNoSQL, gerencialPainelDto.getListParameters());
List listRetorno = null;
if (listParms != null) {
listRetorno = (List) getDao().executaSQL(sql, listParms.toArray());
} else {
listRetorno = (List) getDao().executaSQL(sql, null);
}
return generateRetorno(listRetorno, gerencialItemDto, infoGenerate, usuario, gerencialItemPainelAuxDto, colParmsUtilizadosNoSQL, infoGenerate.getHashParametros(),
gerencialPainelDto.getListParameters(), gerencialPainelDto, request);
} else if (gerencialItemDto.getType().equalsIgnoreCase("SERVICE")) {
Class classeExecutar = Class.forName(gerencialItemDto.getClassExecute());
List listRetorno = null;
if (classeExecutar != null) {
Object objetoClasseExecutar = classeExecutar.newInstance();
Method metodo = Reflexao.findMethod("execute", objetoClasseExecutar);
if (metodo != null) {
gerencialPainelDto.getListParameters().add(request);
Object[] param = new Object[] { infoGenerate.getHashParametros(), gerencialPainelDto.getListParameters() };
listRetorno = (List) metodo.invoke(objetoClasseExecutar, param);
}
}
gerencialPainelDto.getListParameters().remove(request);
return generateRetorno(listRetorno, gerencialItemDto, infoGenerate, usuario, gerencialItemPainelAuxDto, null, infoGenerate.getHashParametros(), gerencialPainelDto.getListParameters(),
gerencialPainelDto, request);
} else if (gerencialItemDto.getType().equalsIgnoreCase("SERVICE_BUFFER")) {
Class classeExecutar = Class.forName(gerencialItemDto.getClassExecute());
String strRetorno = null;
if (classeExecutar != null) {
Object objetoClasseExecutar = classeExecutar.newInstance();
Method metodo = Reflexao.findMethod("execute", objetoClasseExecutar);
if (metodo != null) {
gerencialPainelDto.getListParameters().add(request);
Object[] param = new Object[] { infoGenerate.getHashParametros(), gerencialPainelDto.getListParameters() };
strRetorno = (String) metodo.invoke(objetoClasseExecutar, param);
}
}
gerencialPainelDto.getListParameters().remove(request);
//return generateRetornoPDF_Buffer(strRetorno, gerencialItemDto, infoGenerate, usuario, gerencialItemPainelAuxDto, null, infoGenerate.getHashParametros(),
// gerencialPainelDto.getListParameters(), gerencialPainelDto);
return generateRetorno_Buffer(strRetorno, gerencialItemDto, infoGenerate, usuario, gerencialItemPainelAuxDto, null, infoGenerate.getHashParametros(),
gerencialPainelDto.getListParameters(), gerencialPainelDto, request);
}
} catch (Exception e) {
e.printStackTrace();
throw new ServiceException(e);
}
return null;
}
private List trataParameters(HashMap hsmParms, Usuario usuario, Collection colParmsUtilizadosNoSQL, Collection colDefinicaoParametros) {
if (colParmsUtilizadosNoSQL == null || colParmsUtilizadosNoSQL.size() == 0) {
return null;
}
List lstRetorno = new ArrayList();
for (Iterator it = colParmsUtilizadosNoSQL.iterator(); it.hasNext();) {
String nameParm = (String) it.next();
String type = getTypeParametro(colDefinicaoParametros, nameParm);
String valor = (String) hsmParms.get(nameParm);
if (type.equalsIgnoreCase("java.sql.Date")) {
Date data = null;
try {
data = UtilDatas.strToSQLDate(valor);
} catch (LogicException e) {
e.printStackTrace();
LOGGER.error(e);
}
lstRetorno.add(data);
}
if (type.equalsIgnoreCase("java.lang.Integer")) {
Integer intAux = null;
if (valor == null) {
intAux = new Integer(0);
} else {
intAux = new Integer(valor);
}
lstRetorno.add(intAux);
}
if (type.equalsIgnoreCase("java.lang.Double")) {
Double duplo;
String aux = valor;
aux = aux.replaceAll("\\.", "");
aux = aux.replaceAll("\\,", "\\.");
duplo = new Double(Double.parseDouble(aux));
lstRetorno.add(duplo);
}
if (type.equalsIgnoreCase("java.lang.String")) {
lstRetorno.add(valor);
}
}
return lstRetorno;
}
private String getTypeParametro(Collection colDefinicaoParametros, String nameParm) {
if (colDefinicaoParametros == null) {
return "";
}
for (Iterator it = colDefinicaoParametros.iterator(); it.hasNext();) {
GerencialParameterDTO gerencialParameterDTO = (GerencialParameterDTO) it.next();
String nomeParmAux = "PARAM." + gerencialParameterDTO.getName().trim();
if (nomeParmAux.equalsIgnoreCase(nameParm)) {
return gerencialParameterDTO.getType();
}
}
return "";
}
public Collection executaSQLOptions(GerencialOptionsDTO options, GerencialPainelDTO gerencialPainelDto, HashMap hashParametros, Usuario user) throws ServiceException {
return executaSQLOptions(options, gerencialPainelDto.getListParameters(), hashParametros, user);
}
public Collection executaSQLOptions(GerencialOptionsDTO options, Collection listParameters, HashMap hashParametros, Usuario user) throws ServiceException {
String sqlParm = "";
if (options.getType().equalsIgnoreCase("CLASS_GENERATE_SQL")) {
Class classeExecutar;
try {
classeExecutar = Class.forName(options.getClassExecute());
} catch (ClassNotFoundException e) {
e.printStackTrace();
throw new ServiceException(e);
}
if (classeExecutar != null) {
Object objetoClasseExecutar;
try {
objetoClasseExecutar = classeExecutar.newInstance();
} catch (InstantiationException e) {
e.printStackTrace();
throw new ServiceException(e);
} catch (IllegalAccessException e) {
e.printStackTrace();
throw new ServiceException(e);
}
Method metodo = Reflexao.findMethod("generateSQL", objetoClasseExecutar);
if (metodo != null) {
Object[] param = new Object[] { hashParametros, listParameters };
Object retorno = null;
try {
retorno = metodo.invoke(objetoClasseExecutar, param);
} catch (IllegalArgumentException e) {
e.printStackTrace();
throw new ServiceException(e);
} catch (IllegalAccessException e) {
e.printStackTrace();
throw new ServiceException(e);
} catch (InvocationTargetException e) {
e.printStackTrace();
throw new ServiceException(e);
}
sqlParm = (String) retorno;
}
}
} else { // SQL
sqlParm = options.getSql();
}
Collection colRetorno = new ArrayList();
Collection colParmsUtilizadosNoSQL = new ArrayList();
String sql = trataSQL(sqlParm, user, colParmsUtilizadosNoSQL);
List listParms = trataParameters(hashParametros, user, colParmsUtilizadosNoSQL, listParameters);
List listRetorno = null;
try {
if (listParms != null) {
listRetorno = (List) getDao().executaSQL(sql, listParms.toArray());
} else {
listRetorno = (List) getDao().executaSQL(sql, null);
}
} catch (Exception e) {
listRetorno = null;
/*
* e.printStackTrace(); throw new ServiceException(e);
*/
}
if (listRetorno != null && listRetorno.size() > 0) {
for (int i = 0; i < listRetorno.size(); i++) {
Object[] row = (Object[]) listRetorno.get(i);
GerencialOptionDTO option = new GerencialOptionDTO();
for (int z = 0; z < row.length; z++) {
Object obj = row[z];
if(obj!=null){
if (z == 0) {
option.setValue(obj.toString());
}
if (z == 1) {
option.setText(obj.toString());
}
}
}
colRetorno.add(option);
}
}
return colRetorno;
}
/**
* Funcao para Tratar o SQL. ATENCAO: O 3.o Parametro eh Utilizado como Referencia! Sera limpo e atualizado dentro da funcao
*
* @param sql
* @param usuario
* @param colParmsUtilizadosNoSQL
* - Parametro por Referencia.
* @return
*/
private String trataSQL(String sql, Usuario usuario, Collection colParmsUtilizadosNoSQL) {
sql = sql.replaceAll("\\{IDEMPRESA\\}", "" + usuario.getIdEmpresa());
sql = sql.replaceAll("\\{DATAATUAL\\}", "'" + UtilDatas.dateToSTR(UtilDatas.getDataAtual()) + "'");
boolean b = true;
while (b) {
int beginIndex = sql.indexOf("{PARAM");
if (beginIndex >= 0) {
int endIndex = sql.indexOf("}");
String nameParm = sql.substring(beginIndex, endIndex);
nameParm = nameParm.replaceAll("\\{", "");
sql = sql.replaceFirst("\\{" + nameParm + "\\}", "?");
colParmsUtilizadosNoSQL.add(nameParm);
} else {
b = false;
}
}
return sql;
}
private Object generateRetorno(List listRetorno, GerencialItemInformationDTO gerencialItemDto, GerencialInfoGenerateDTO infoGenerate, Usuario usuario,
GerencialItemPainelDTO gerencialItemPainelAuxDto, Collection colParmsUtilizadosNoSQL, HashMap hshParameters, Collection colDefinicaoParametros, GerencialPainelDTO gerencialPainelDto,
HttpServletRequest request) throws Exception {
if (infoGenerate.getSaida().equalsIgnoreCase("TABLE")) {
return generateRetornoTabela(listRetorno, gerencialItemDto, infoGenerate, usuario, gerencialItemPainelAuxDto, colParmsUtilizadosNoSQL, hshParameters, colDefinicaoParametros,
gerencialPainelDto, request);
} else if (infoGenerate.getSaida().equalsIgnoreCase("GRAPH")) {
return generateRetornoGrafico(listRetorno, gerencialItemDto, infoGenerate, usuario, gerencialItemPainelAuxDto, colParmsUtilizadosNoSQL, hshParameters, colDefinicaoParametros,
gerencialPainelDto, request);
} else if (infoGenerate.getSaida().equalsIgnoreCase("PDF")) {
return generateRetornoPDF(listRetorno, gerencialItemDto, infoGenerate, usuario, gerencialItemPainelAuxDto, colParmsUtilizadosNoSQL, hshParameters, colDefinicaoParametros,
gerencialPainelDto, request);
}
return null;
}
private Object generateRetornoTabela(List listRetorno, GerencialItemInformationDTO gerencialItemDto, GerencialInfoGenerateDTO infoGenerate, Usuario usuario,
GerencialItemPainelDTO gerencialItemPainelAuxDto, Collection colParmsUtilizadosNoSQL, HashMap hshParameters, Collection colDefinicaoParametros, GerencialPainelDTO gerencialPainelDto,
HttpServletRequest request) throws LogicException {
Double[][] totals = new Double[100][100];
Double[][] counts = new Double[100][100];
String[][] anteriorValue = new String[100][100];
Double[] totalLinha = new Double[100];
Double[] countLinha = new Double[100];
boolean[][] isTotals = new boolean[100][100];
boolean[][] isCounts = new boolean[100][100];
boolean[] temItensNoGrupo = new boolean[100];
int colunasGrupos[] = new int[100];
String bufferRetorno = "";
int qtdeColunas = 0;
int qtdeColunasSemAgrupadores = 0;
int qtdeColunasAgrupadoras = 0;
boolean temTotals = false;
boolean temCounts = false;
boolean existeAgrupador = false;
bufferRetorno += "<table width='100%'>";
EndPageControl endPageControl = new EndPageControl(existeAgrupador, gerencialItemDto, null, listRetorno, 100, new int[] { 100 },
UtilI18N.internacionaliza(request, gerencialItemDto.getTitle()), colParmsUtilizadosNoSQL, hshParameters, colDefinicaoParametros, gerencialPainelDto, request);
String strFiltro = endPageControl.trataParameters(hshParameters, colParmsUtilizadosNoSQL, colDefinicaoParametros);
if (strFiltro == null) {
strFiltro = "";
}
bufferRetorno += "<tr>";
bufferRetorno += "<td colspan='50' style='text-align: center;'>";
// bufferRetorno += strFiltro.trim();
bufferRetorno += UtilI18N.internacionaliza(request, "citcorpore.comum.datainicio") + ": " + infoGenerate.getHashParametros().get("PARAM.dataInicial") + " - "
+ UtilI18N.internacionaliza(request, "citcorpore.comum.datafim") + ": " + infoGenerate.getHashParametros().get("PARAM.dataFinal");
bufferRetorno += "</td>";
bufferRetorno += "</tr>";
if (listRetorno != null && listRetorno.size() > 0) {
Object[] row = (Object[]) listRetorno.get(0);
qtdeColunas = row.length;
for (int j = 0; j < row.length; j++) {
GerencialFieldDTO fieldDto = (GerencialFieldDTO) ((List) gerencialItemDto.getListFields()).get(j);
GerencialGroupDTO grupoDefinicaoDto = fieldInGroupDefinition(fieldDto.getName(), gerencialItemDto.getListGroups());
if (grupoDefinicaoDto == null) { // So mostra se nao for um agrupador
qtdeColunasSemAgrupadores++;
} else {
colunasGrupos[qtdeColunasAgrupadoras] = j;
qtdeColunasAgrupadoras++;
existeAgrupador = true;
}
}
if (!existeAgrupador) {
bufferRetorno += geraCabecalhoTabela(row.length, gerencialItemDto, request);
}
} else {
bufferRetorno += "<tr>";
bufferRetorno += "<td colspan='50' style=' text-align: center; font-size: 12px; font-weight:bold; color: red'>";
bufferRetorno += " <br><br><br><br><br><br><br><br><br><br><br><br><br><br>" + UtilI18N.internacionaliza(request, "citcorpore.comum.naoHaDadosParaImpressao");
bufferRetorno += "</td>";
bufferRetorno += "</tr>";
}
if (listRetorno != null && listRetorno.size() != 0) {
for (int i = 0; i < listRetorno.size(); i++) {
Object[] row = (Object[]) listRetorno.get(i);
bufferRetorno += "<tr >";
qtdeColunas = row.length;
int j = 0;
boolean quebrouLinha = false;
int indiceGrupoAdicionado = 0;
for (int x = 0; x < totalLinha.length; x++) {
totalLinha[x] = new Double(0);
countLinha[x] = new Double(0);
}
String bufferLinha = "";
for (int z = 0; z < row.length; z++) {
Object obj = row[z];
GerencialFieldDTO fieldDto = (GerencialFieldDTO) ((List) gerencialItemDto.getListFields()).get(z);
GerencialGroupDTO grupoDefinicaoDto = fieldInGroupDefinition(fieldDto.getName(), gerencialItemDto.getListGroups());
if (grupoDefinicaoDto == null) {
bufferLinha += "<td class=\"celulaGrid\">";
}
if (obj != null) {
String valorAtualAux = null;
// O trecho abaixo serve para controlar a totaliza��o geral (indice 0).
if (totals[totals.length - 1][z] == null) {
totals[totals.length - 1][z] = new Double(0);
}
if (counts[counts.length - 1][z] == null) {
counts[counts.length - 1][z] = new Double(0);
}
// O trecho abaixo server para controlar totalizacoes dos grupos (indice > 0 - numero da coluna agrupadora);
if (totalLinha[z] == null) {
totalLinha[z] = new Double(0);
}
if (countLinha[z] == null) {
countLinha[z] = new Double(0);
}
if (fieldDto.getClassField().getName().equalsIgnoreCase("java.lang.String")) {
String objString = "";
if (Integer.class.isInstance(obj)) {
objString = "" + ((Integer) obj).intValue();
} else {
objString = (String) obj;
}
valorAtualAux = objString;
if (grupoDefinicaoDto == null) {
bufferLinha += objString;
}
if (fieldDto.isCount()) {
temCounts = true;
counts[counts.length - 1][z] = new Double(counts[counts.length - 1][z].doubleValue() + 1);
isCounts[counts.length - 1][z] = true;
countLinha[z] = new Double(countLinha[z].doubleValue() + 1);
}
}
if (fieldDto.getClassField().getName().equalsIgnoreCase("java.lang.Double")) {
Double objDouble = null;
if (Integer.class.isInstance(obj)) {
objDouble = new Double(((Integer) obj).doubleValue());
} else {
if (BigDecimal.class.isInstance(obj)) {
objDouble = new Double(((BigDecimal) obj).doubleValue());
} else if (Long.class.isInstance(obj)) {
objDouble = new Double(((Long) obj).doubleValue());
} else if (Integer.class.isInstance(obj)) {
objDouble = new Double(((Integer) obj).doubleValue());
} else if (BigInteger.class.isInstance(obj)) {
objDouble = new Double(((BigInteger) obj).doubleValue());
} else {
objDouble = (Double) obj;
}
}
if (objDouble == null) {
objDouble = new Double(0);
}
valorAtualAux = objDouble.toString();
if (grupoDefinicaoDto == null) {
bufferLinha += UtilFormatacao.formatDouble(objDouble, fieldDto.getDecimals().intValue());
}
if (fieldDto.isTotals()) {
temTotals = true;
totals[counts.length - 1][z] = new Double(totals[counts.length - 1][z].doubleValue() + objDouble.doubleValue());
isTotals[counts.length - 1][z] = true;
totalLinha[z] = new Double(totalLinha[z].doubleValue() + objDouble.doubleValue());
}
if (fieldDto.isCount()) {
temCounts = true;
counts[counts.length - 1][z] = new Double(counts[counts.length - 1][z].doubleValue() + 1);
isCounts[counts.length - 1][z] = true;
countLinha[z] = new Double(countLinha[z].doubleValue() + 1);
}
}
if (fieldDto.getClassField().getName().equalsIgnoreCase("java.lang.Integer")) {
Integer objInteger = null;
if (Integer.class.isInstance(obj)) {
objInteger = (Integer) obj;
} else if (Long.class.isInstance(obj)) {
Long objLong = (Long) obj;
if (objLong != null) {
objInteger = new Integer(objLong.intValue());
} else {
objInteger = new Integer(0);
}
}
if (grupoDefinicaoDto == null) {
bufferLinha += objInteger;
}
if (objInteger != null)
valorAtualAux = objInteger.toString();
else
valorAtualAux = null;
if (fieldDto.isTotals()) {
temTotals = true;
totals[counts.length - 1][z] = new Double(totals[counts.length - 1][z].doubleValue() + objInteger.intValue());
isTotals[counts.length - 1][z] = true;
totalLinha[z] = new Double(totalLinha[z].doubleValue() + objInteger.intValue());
}
if (fieldDto.isCount()) {
temCounts = true;
counts[counts.length - 1][z] = new Double(counts[counts.length - 1][z].doubleValue() + 1);
isCounts[counts.length - 1][z] = true;
countLinha[z] = new Double(countLinha[z].doubleValue() + 1);
}
}
if (fieldDto.getClassField().getName().equalsIgnoreCase("java.sql.Date")) {
Date objDate = null;
if (Timestamp.class.isInstance(obj)) {
objDate = new java.sql.Date(((Timestamp) obj).getTime());
} else if (Date.class.isInstance(obj)) {
objDate = (Date) obj;
}
if (objDate != null) {
//valorAtualAux = UtilDatas.dateToSTR(objDate);
valorAtualAux = UtilDatas.convertDateToString(UtilDatas.getTipoDate(objDate.toString(), WebUtil.getLanguage(request)), objDate, WebUtil.getLanguage(request));
if (grupoDefinicaoDto == null) {
//bufferLinha += UtilDatas.dateToSTR(objDate);
bufferLinha += UtilDatas.convertDateToString(UtilDatas.getTipoDate(objDate.toString(), WebUtil.getLanguage(request)), objDate, WebUtil.getLanguage(request));
}
} else {
valorAtualAux = null;
}
if (fieldDto.isCount()) {
temCounts = true;
counts[counts.length - 1][z] = new Double(counts[counts.length - 1][z].doubleValue() + 1);
isCounts[counts.length - 1][z] = true;
countLinha[z] = new Double(countLinha[z].doubleValue() + 1);
}
}
if (grupoDefinicaoDto != null) { // Encontrou definicao de Grupo para este campo.
if (!valorAtualAux.equalsIgnoreCase(anteriorValue[0][z])) {
// Quebrou - Entra neste trecho
// Verifica se tem totalizacao, se sim, entao gera os totais.
if (temCounts || temTotals) {
for (int x = temItensNoGrupo.length - 1; x >= z; x--) {
if (temItensNoGrupo[x]) {
bufferRetorno += geraTotais(qtdeColunas, x, gerencialItemDto, isCounts, isTotals, totals, counts, infoGenerate.getHashParametros());
bufferRetorno += "<tr><td colspan='" + qtdeColunasSemAgrupadores + "'>";
bufferRetorno += " ";
bufferRetorno += "</td></tr>";
}
}
for (int x = z; x < temItensNoGrupo.length; x++) {
temItensNoGrupo[x] = false;
}
}
indiceGrupoAdicionado = z;
// Gera o cabecalho com o grupo
bufferRetorno += "<td><tr></td></tr>";
bufferRetorno += "<tr><td class=\"celulaGrid\" style=\"background-color: #B5B5B5;\" colspan='" + qtdeColunasSemAgrupadores + "'>";
for (int x = 0; x < z; x++)
bufferRetorno += " ";
bufferRetorno += "<label style=\"fonte-size: 12px\">" + UtilI18N.internacionaliza(request, fieldDto.getTitle()) + ":</label> <b>" + valorAtualAux + "</b>";
bufferRetorno += "</td></tr>";
quebrouLinha = true;
}
} else {
j++;
}
anteriorValue[0][z] = valorAtualAux; // O Valor Atual passa a ser o Valor Anterior.
} else {
if (grupoDefinicaoDto == null) {
j++;
bufferLinha += " ";
}
}
if (grupoDefinicaoDto == null) {
bufferLinha += "</td>";
}
}
if (quebrouLinha) {
bufferRetorno += geraCabecalhoTabela(row.length, gerencialItemDto, request);
}
for (int x = 0; x < qtdeColunasAgrupadoras; x++) {
for (int z = 0; z < qtdeColunas; z++) {
if (totals[colunasGrupos[x]][z] == null) {
totals[colunasGrupos[x]][z] = new Double(0);
}
if (counts[colunasGrupos[x]][z] == null) {
counts[colunasGrupos[x]][z] = new Double(0);
}
if (totalLinha[z] == null) {
totalLinha[z] = new Double(0);
}
if (countLinha[z] == null) {
countLinha[z] = new Double(0);
}
totals[colunasGrupos[x]][z] = new Double(totals[colunasGrupos[x]][z].doubleValue() + totalLinha[z].doubleValue());
counts[colunasGrupos[x]][z] = new Double(counts[colunasGrupos[x]][z].doubleValue() + countLinha[z].doubleValue());
}
}
bufferRetorno += bufferLinha;
bufferRetorno += "</tr>";
if (existeAgrupador)
temItensNoGrupo[indiceGrupoAdicionado] = true;
}
}
if (temCounts || temTotals) {
for (int x = temItensNoGrupo.length - 1; x >= 0; x--) {
if (temItensNoGrupo[x]) {
bufferRetorno += geraTotais(qtdeColunas, x, gerencialItemDto, isCounts, isTotals, totals, counts, infoGenerate.getHashParametros());
bufferRetorno += "<tr><td colspan='" + qtdeColunasSemAgrupadores + "'>";
bufferRetorno += " ";
bufferRetorno += "</td></tr>";
}
}
bufferRetorno += "<tr><td colspan='" + qtdeColunasSemAgrupadores + "'>";
bufferRetorno += " ";
bufferRetorno += "</td></tr>";
/*
* Rodrigo Pecci Acorse - 30/01/2014 10h00 - #132390
* Adiciona a soma total dos itens no relat�rio
*/
String somaTotal = geraSomaTotal(listRetorno, gerencialItemPainelAuxDto, gerencialItemDto, request);
if (!somaTotal.equals("")) {
bufferRetorno += "<tr>";
for (int j = 0; j < qtdeColunas; j++) {
if (j < (qtdeColunas - 1)) {
bufferRetorno += "<td class=\"celulaGrid\" style=\"background-color:#dcdcdc;\"></td>";
} else {
bufferRetorno += "<td class=\"celulaGrid\" style=\"background-color:#dcdcdc;\">" + somaTotal + "</td>";
}
}
bufferRetorno += "</tr>";
}
//Adiciona o total de registros (linhas) no relat�rio
bufferRetorno += geraTotais(qtdeColunas, counts.length - 1, gerencialItemDto, isCounts, isTotals, totals, counts, infoGenerate.getHashParametros());
}
bufferRetorno += "</table>";
if(listRetorno!= null && listRetorno.size()!= 0){
return bufferRetorno;
} else{
return null;
}
}
public Object geraTabelaVazia(GerencialInfoGenerateDTO infoGenerate, HttpServletRequest request){
String bufferRetorno = "";
bufferRetorno += "<table width='100%'>";
bufferRetorno += "<tr>";
bufferRetorno += "<td colspan='50' style='text-align: center;'>";
// bufferRetorno += strFiltro.trim();
bufferRetorno += UtilI18N.internacionaliza(request, "citcorpore.comum.datainicio") + ": " + infoGenerate.getHashParametros().get("PARAM.dataInicial") + " - "
+ UtilI18N.internacionaliza(request, "citcorpore.comum.datafim") + ": " + infoGenerate.getHashParametros().get("PARAM.dataFinal");
bufferRetorno += "<tr>";
bufferRetorno += "<td colspan='50' style=' text-align: center; font-size: 12px; font-weight:bold; color: red'>";
bufferRetorno += " <br><br><br><br><br><br><br><br><br><br><br><br><br><br>" + UtilI18N.internacionaliza(request, "citcorpore.comum.naoHaDadosParaImpressao");
bufferRetorno += "</td>";
bufferRetorno += "</tr>";
bufferRetorno += "</td>";
bufferRetorno += "</tr>";
bufferRetorno += "</table>";
return bufferRetorno;
}
private String geraCabecalhoTabela(int tam, GerencialItemInformationDTO gerencialItemDto, HttpServletRequest request) {
String bufferRetorno = "<tr>";
for (int j = 0; j < tam; j++) {
GerencialFieldDTO fieldDto = (GerencialFieldDTO) ((List) gerencialItemDto.getListFields()).get(j);
GerencialGroupDTO grupoDefinicaoDto = fieldInGroupDefinition(fieldDto.getName(), gerencialItemDto.getListGroups());
if (grupoDefinicaoDto == null) { // So mostra se nao for um agrupador
bufferRetorno += "<td width=\"" + fieldDto.getWidth() + "\" class=\"linhaSubtituloGrid\">";
bufferRetorno += "<b>" + UtilI18N.internacionaliza(request, fieldDto.getTitle()) + "</b>";
bufferRetorno += "</td>";
}
}
bufferRetorno += "</tr>";
return bufferRetorno;
}
private GerencialGroupDTO fieldInGroupDefinition(String fieldName, Collection colGrupos) {
if (colGrupos == null) {
return null;
}
for (Iterator it = colGrupos.iterator(); it.hasNext();) {
GerencialGroupDTO gerencialGroup = (GerencialGroupDTO) it.next();
if (gerencialGroup.getFieldName().trim().equalsIgnoreCase(fieldName)) {
return gerencialGroup;
}
}
return null;
}
/**
* Rodrigo Pecci Acorse - 30/01/2014 10h00 - #132390
* Retorna a soma total do resultado das colunas do relat�rio
*
* @param listRetorno
* @param gerencialItemPainelAuxDto
* @param gerencialItemDto
* @param request
* @return String
* @author rodrigo.acorse
*/
private String geraSomaTotal(List listRetorno, GerencialItemPainelDTO gerencialItemPainelAuxDto, GerencialItemInformationDTO gerencialItemDto, HttpServletRequest request) {
String bufferRetorno = "";
if (gerencialItemPainelAuxDto != null && gerencialItemPainelAuxDto.getTotal() != null && gerencialItemPainelAuxDto.getTotal().equalsIgnoreCase("y")) {
Double objDouble;
Double objTotal = new Double(0);
if (listRetorno == null) {
listRetorno = new ArrayList();
}
for (int i = 0; i < listRetorno.size(); i++) {
Object[] row = (Object[]) listRetorno.get(i);
for (int j = 0; j < row.length; j++) {
Object obj = row[j];
GerencialFieldDTO fieldDto = (GerencialFieldDTO) ((List) gerencialItemDto.getListFields()).get(j);
if (fieldDto.isCount()) {
objDouble = new Double(0);
if (fieldDto.getClassField().getName().equalsIgnoreCase("java.lang.Integer")) {
if (Integer.class.isInstance(obj)) {
objDouble = new Double(((Integer) obj).intValue());
} else if (Long.class.isInstance(obj)) {
objDouble = new Double(((Long) obj).intValue());
}
}
if (fieldDto.getClassField().getName().equalsIgnoreCase("java.lang.Double")) {
if (Integer.class.isInstance(obj)) {
objDouble = new Double(((Integer) obj).doubleValue());
} else {
if (BigDecimal.class.isInstance(obj)) {
objDouble = new Double(((BigDecimal) obj).doubleValue());
} else if (Long.class.isInstance(obj)) {
objDouble = new Double(((Long) obj).doubleValue());
} else if (Integer.class.isInstance(obj)) {
objDouble = new Double(((Integer) obj).doubleValue());
} else if (BigInteger.class.isInstance(obj)) {
objDouble = new Double(((BigInteger) obj).doubleValue());
} else {
objDouble = (Double) obj;
}
}
}
objTotal = objTotal + objDouble;
}
}
}
bufferRetorno += UtilI18N.internacionaliza(request, "carrinho.total") + " " + objTotal.toString();
}
return bufferRetorno.toString();
}
private String geraTotais(int qtdeColunas, int indice, GerencialItemInformationDTO gerencialItemDto, boolean[][] isCounts, boolean[][] isTotals, Double[][] totals, Double[][] counts,
HashMap parametersValues) {
String bufferRetorno = "<tr>";
String quantidadeTotalRegistros = (String) parametersValues.get("citcorpore.comum.quantidadeDeOrigens");
String quantidadeRegistros = (String) parametersValues.get("citcorpore.comum.quantidadeRegistros");
int iAux = 0;
for (int j = 0; j < qtdeColunas; j++) {
GerencialFieldDTO fieldDto = (GerencialFieldDTO) ((List) gerencialItemDto.getListFields()).get(j);
GerencialGroupDTO grupoDefinicaoDto = fieldInGroupDefinition(fieldDto.getName(), gerencialItemDto.getListGroups());
if (grupoDefinicaoDto == null) {
bufferRetorno += "<td class=\"celulaGrid\" style=\"background-color:#dcdcdc;\">";
if (indice == counts.length - 1) {
if (isCounts[counts.length - 1][j]) {
bufferRetorno += quantidadeTotalRegistros + ": <b>" + UtilFormatacao.formatDouble(counts[indice][j], 0) + "</b>";
} else if (isTotals[counts.length - 1][j]) {
if (fieldDto.getClassField().getName().equalsIgnoreCase("java.lang.Double")) {
bufferRetorno += "<b>" + UtilFormatacao.formatDouble(totals[indice][j], 2) + "</b>";
} else {
bufferRetorno += "<b>" + UtilFormatacao.formatDouble(totals[indice][j], 0) + "</b>";
}
} else {
bufferRetorno += " ";
}
} else {
if (isCounts[counts.length - 1][j]) {
bufferRetorno += quantidadeRegistros + ": <b>" + UtilFormatacao.formatDouble(counts[indice][j], 0) + "</b>";
// Zera o Item
counts[indice][j] = new Double(0);
} else if (isTotals[counts.length - 1][j]) {
if (fieldDto.getClassField().getName().equalsIgnoreCase("java.lang.Double")) {
bufferRetorno += "<b>" + UtilFormatacao.formatDouble(totals[indice][j], 2) + "</b>";
} else {
bufferRetorno += "<b>" + UtilFormatacao.formatDouble(totals[indice][j], 0) + "</b>";
}
// Zera o Item
totals[indice][j] = new Double(0);
} else {
bufferRetorno += " ";
}
}
bufferRetorno += "</td>";
iAux++;
}
}
bufferRetorno += "</tr>";
return bufferRetorno;
}
private Object generateRetornoGrafico(List listRetorno, GerencialItemInformationDTO gerencialItemDto, GerencialInfoGenerateDTO infoGenerate, Usuario usuario,
GerencialItemPainelDTO gerencialItemPainelAuxDto, Collection colParmsUtilizadosNoSQL, HashMap hshParameters, Collection colDefinicaoParametros, GerencialPainelDTO gerencialPainelDto,
HttpServletRequest request) throws Exception {
String bufferRetorno = "";
EndPageControl endPageControl = new EndPageControl(false, gerencialItemDto, null, listRetorno, 100, new int[] { 100 }, UtilI18N.internacionaliza(request, gerencialItemDto.getTitle()),
colParmsUtilizadosNoSQL, hshParameters, colDefinicaoParametros, gerencialPainelDto, request);
String strFiltro = endPageControl.trataParameters(hshParameters, colParmsUtilizadosNoSQL, colDefinicaoParametros);
if (strFiltro == null) {
strFiltro = "";
}
bufferRetorno += "<table width='100%'> ";
bufferRetorno += "<tr>";
bufferRetorno += "<td style='text-align: center;font-size:13px'>";
bufferRetorno += "" + UtilI18N.internacionaliza(request, "citcorpore.comum.datainicio") + ":" + infoGenerate.getHashParametros().get("PARAM.dataInicial") + " - "
+ UtilI18N.internacionaliza(request, "citcorpore.comum.datafim") + ": " + infoGenerate.getHashParametros().get("PARAM.dataFinal");
bufferRetorno += "</td>";
bufferRetorno += "</tr>";
bufferRetorno += "<tr>";
bufferRetorno += "<td>";
if (infoGenerate.getGraphType()!=null){
if (infoGenerate.getGraphType().equalsIgnoreCase("BARRA3D")) {
bufferRetorno += generateRetornoGrafico_Barra(true, listRetorno, gerencialItemDto, infoGenerate, usuario, gerencialItemPainelAuxDto, request);
} else if (infoGenerate.getGraphType().equalsIgnoreCase("BARRA2D")) {
bufferRetorno += generateRetornoGrafico_Barra(false, listRetorno, gerencialItemDto, infoGenerate, usuario, gerencialItemPainelAuxDto, request);
} else if (infoGenerate.getGraphType().equalsIgnoreCase("PIZZA3D")) {
bufferRetorno += generateRetornoGrafico_Pizza(true, listRetorno, gerencialItemDto, infoGenerate, usuario, gerencialItemPainelAuxDto, request);
} else if (infoGenerate.getGraphType().equalsIgnoreCase("PIZZA2D")) {
bufferRetorno += generateRetornoGrafico_Pizza(false, listRetorno, gerencialItemDto, infoGenerate, usuario, gerencialItemPainelAuxDto, request);
} else if (infoGenerate.getGraphType().equalsIgnoreCase("LINHA3D")) {
bufferRetorno += generateRetornoGrafico_Linha(true, listRetorno, gerencialItemDto, infoGenerate, usuario, gerencialItemPainelAuxDto, request);
} else if (infoGenerate.getGraphType().equalsIgnoreCase("LINHA2D")) {
bufferRetorno += generateRetornoGrafico_Linha(false, listRetorno, gerencialItemDto, infoGenerate, usuario, gerencialItemPainelAuxDto, request);
}
}
bufferRetorno += "</td>";
bufferRetorno += "</tr>";
/*
* Rodrigo Pecci Acorse - 30/01/2014 10h00 - #132390
* Adiciona a soma total dos itens no relat�rio
*/
String somaTotal = geraSomaTotal(listRetorno, gerencialItemPainelAuxDto, gerencialItemDto, request);
if (!somaTotal.equals("")) {
bufferRetorno += "<tr>";
bufferRetorno += " <td style=\"text-align: center;font-weight: bold;font-size: 14px;\">" + somaTotal + "</td>";
bufferRetorno += "</tr>";
}
bufferRetorno += "</table>";
if(listRetorno != null && listRetorno.size()!= 0){
return bufferRetorno;
} else {
return geraTabelaVazia(infoGenerate, request);
}
}
private Object generateRetornoGrafico_Barra(boolean is3D, List listRetorno, GerencialItemInformationDTO gerencialItemDto, GerencialInfoGenerateDTO infoGenerate, Usuario usuario,
GerencialItemPainelDTO gerencialItemPainelAuxDto, HttpServletRequest request) throws Exception {
JFreeChart chart;
DefaultCategoryDataset dados = new DefaultCategoryDataset();
Double objDouble;
String objString1;
String objString2;
int qtdeColunas = 0;
int posString = 0;
int qtdeLinhas = 0;
for (int i = 0; i < listRetorno.size(); i++) {
Object[] row = (Object[]) listRetorno.get(i);
qtdeColunas = row.length - 1;
objDouble = new Double(0);
objString1 = "";
objString2 = "";
posString = 0;
qtdeLinhas++;
for (int j = 0; j < row.length; j++) {
Object obj = row[j];
GerencialFieldDTO fieldDto = (GerencialFieldDTO) ((List) gerencialItemDto.getListFields()).get(j);
if (fieldDto.getClassField().getName().equalsIgnoreCase("java.lang.Integer")) {
if (Integer.class.isInstance(obj)) {
objDouble = new Double(((Integer) obj).intValue());
} else if (Long.class.isInstance(obj)) {
objDouble = new Double(((Long) obj).intValue());
}
}
if (fieldDto.getClassField().getName().equalsIgnoreCase("java.lang.Double")) {
objDouble = null;
if (Integer.class.isInstance(obj)) {
objDouble = new Double(((Integer) obj).doubleValue());
} else {
if (BigDecimal.class.isInstance(obj)) {
objDouble = new Double(((BigDecimal) obj).doubleValue());
} else if (Long.class.isInstance(obj)) {
objDouble = new Double(((Long) obj).doubleValue());
} else if (Integer.class.isInstance(obj)) {
objDouble = new Double(((Integer) obj).doubleValue());
} else if (BigInteger.class.isInstance(obj)) {
objDouble = new Double(((BigInteger) obj).doubleValue());
} else {
objDouble = (Double) obj;
}
}
if (objDouble == null) {
objDouble = new Double(0);
}
}
if (fieldDto.getClassField().getName().equalsIgnoreCase("java.lang.String")) {
if (obj == null) {
obj = new String("");
}
String str = "";
if (Integer.class.isInstance(obj)) {
str = "" + (Integer) obj;
} else {
str = (String) obj;
}
if (posString == 0) {
objString1 = str;
} else {
objString2 = str;
}
posString++;
}
}
if (objString1 == null || objString1.trim().equalsIgnoreCase("")) {
Object obj = row[0];
GerencialFieldDTO fieldDto = (GerencialFieldDTO) ((List) gerencialItemDto.getListFields()).get(0);
if (fieldDto.getClassField().getName().equalsIgnoreCase("java.lang.Integer")) {
objString1 = new String("" + ((Integer) obj).intValue());
}
if (fieldDto.getClassField().getName().equalsIgnoreCase("java.lang.Double")) {
objDouble = null;
if (Integer.class.isInstance(obj)) {
objDouble = new Double(((Integer) obj).doubleValue());
} else {
if (BigDecimal.class.isInstance(obj)) {
objDouble = new Double(((BigDecimal) obj).doubleValue());
} else if (Long.class.isInstance(obj)) {
objDouble = new Double(((Long) obj).doubleValue());
} else if (Integer.class.isInstance(obj)) {
objDouble = new Double(((Integer) obj).doubleValue());
} else if (BigInteger.class.isInstance(obj)) {
objDouble = new Double(((BigInteger) obj).doubleValue());
} else {
objDouble = (Double) obj;
}
}
if (objDouble == null) {
objDouble = new Double(0);
}
objString1 = UtilFormatacao.formatDouble(objDouble, 0);
}
}
dados.addValue(objDouble.doubleValue(), objString1, objString2);
}
String t1 = null;
String t2 = null;
GerencialFieldDTO fieldDto = null;
try {
fieldDto = (GerencialFieldDTO) ((List) gerencialItemDto.getListFields()).get(0);
t1 = fieldDto.getTitle();
} catch (Exception e) {
}
try {
fieldDto = (GerencialFieldDTO) ((List) gerencialItemDto.getListFields()).get(qtdeColunas);
t2 = fieldDto.getTitle();
} catch (Exception e) {
}
if (is3D) {
chart = ChartFactory.createBarChart3D(UtilI18N.internacionaliza(request, gerencialItemDto.getTitle()), t1, t2, dados, PlotOrientation.VERTICAL, true, true, false);
} else {
chart = ChartFactory.createBarChart(UtilI18N.internacionaliza(request, gerencialItemDto.getTitle()), t1, t2, dados, PlotOrientation.VERTICAL, true, true, false);
}
// Setando o valor maximo para nunca passar de 100, ja q se trata de
// porcentagem
CategoryPlot plot = chart.getCategoryPlot();
plot.setRangeAxisLocation(AxisLocation.BOTTOM_OR_LEFT);
plot.getRenderer().setBasePositiveItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.OUTSIDE1, TextAnchor.CENTER));
NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis();
rangeAxis.setUpperMargin(0.20);
rangeAxis.setAxisLineVisible(true);
rangeAxis.setTickLabelsVisible(true);
rangeAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
// Formatando cores de fundo, fonte do titulo, etc...
chart.setBackgroundPaint(COR_FUNDO); // Cor do fundo do grafico
chart.getTitle().setPaint(COR_TITULO); // Cor do titulo
chart.getTitle().setFont(new java.awt.Font("arial", Font.BOLD, 10)); // Fonte do
chart.getPlot().setBackgroundPaint(new Color(221, 227, 213));// Cor de
chart.getLegend().setItemFont(new java.awt.Font("arial", Font.BOLD, 8));
chart.setBorderVisible(false); // Visibilidade da borda do grafico
BarRenderer rend = (BarRenderer) plot.getRenderer();
// CategoryItemRenderer rend = (CategoryItemRenderer) plot.getRenderer();
rend.setSeriesOutlinePaint(0, Color.BLACK); // Cor da borda das barras do
rend.setBaseItemLabelFont(new java.awt.Font("SansSerif", Font.BOLD, 10));
// rend.setSeriesPaint(0, new Color(70 ,130 ,180)); // Cor das barras do
// rend.setItemMargin(0.10); // Margem entre o eixo Y e a primeira barra do
rend.setBaseItemLabelsVisible(true);
// rend.setBaseItemLabelGenerator(new CustomLabelGenerator());
rend.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());
rend.setSeriesItemLabelsVisible(0, new Boolean(true));
rend.setSeriesItemLabelGenerator(0, new StandardCategoryItemLabelGenerator());
// rend.setSeriesPositiveItemLabelPosition(1, new ItemLabelPosition(ItemLabelAnchor.OUTSIDE11, TextAnchor.BASELINE_CENTER, TextAnchor.BASELINE_CENTER, 50.0));
rend.setPositiveItemLabelPositionFallback(new ItemLabelPosition(ItemLabelAnchor.CENTER, TextAnchor.BASELINE_CENTER, TextAnchor.CENTER, 0.0));
String caminhoRelativo = "";
String caminho = "";
try {
File arquivo = new File(infoGenerate.getCaminhoArquivosGraficos());
if (!arquivo.exists()) {
arquivo.mkdirs();
}
File arquivoVer = new File(infoGenerate.getCaminhoArquivosGraficos() + "/" + usuario.getIdUsuario());
if (!arquivoVer.exists()) {
arquivoVer.mkdirs();
}
caminho = infoGenerate.getCaminhoArquivosGraficos() + "/" + usuario.getIdUsuario() + "/"
+ UtilStrings.generateNomeBusca(UtilStrings.removeCaracteresEspeciais(gerencialItemDto.getDescription())) + "_"
+ UtilDatas.convertDateToString(TipoDate.TIMESTAMP_WITH_SECONDS, UtilDatas.getDataHoraAtual(), WebUtil.getLanguage(request)).replaceAll("/", "_").replaceAll(":", "_").replaceAll(" ", "_") + ".png";
// caminhoRelativo = br.com.citframework.util.Constantes.getValue("SERVER_ADDRESS") + br.com.citframework.util.Constantes.getValue("CONTEXTO_APLICACAO") + "/tempFiles" + "/" +
// usuario.getIdUsuario() + "/" + UtilStrings.generateNomeBusca(UtilStrings.removeCaracteresEspeciais(gerencialItemDto.getDescription())) + "_" +
// UtilDatas.formatTimestamp(UtilDatas.getDataHoraAtual()).replaceAll("/", "_").replaceAll(":", "_").replaceAll(" ", "_") + ".png";
String urlInicial = "";
if (urlInicial == null || urlInicial.trim().equalsIgnoreCase("")){
urlInicial = Constantes.getValue("CONTEXTO_APLICACAO");
}
caminhoRelativo = urlInicial + "/tempFiles" + "/" + usuario.getIdUsuario() + "/"
+ UtilStrings.generateNomeBusca(UtilStrings.removeCaracteresEspeciais(gerencialItemDto.getDescription())) + "_"
+ UtilDatas.convertDateToString(TipoDate.TIMESTAMP_WITH_SECONDS, UtilDatas.getDataHoraAtual(), WebUtil.getLanguage(request)).replaceAll("/", "_").replaceAll(":", "_").replaceAll(" ", "_") + ".png";
caminhoRelativoAuxiliar = caminhoRelativo;
arquivo = new File(caminho);
if (arquivo.exists()) {
arquivo.delete();
}
int tam = Integer.parseInt(UtilStrings.apenasNumeros(gerencialItemPainelAuxDto.getWidth()));
int alt = Integer.parseInt(UtilStrings.apenasNumeros(gerencialItemPainelAuxDto.getHeigth()));
tam = tam - 15;
alt = alt - 70;
/*
* if (qtdeLinhas > 20){ tam = qtdeLinhas * 18; }
*/
ChartUtilities.saveChartAsPNG(arquivo, chart, tam, alt);
LOGGER.info("Grafico de Barras gerado em:\n\t" + caminho);
} catch (IOException e) {
LOGGER.error("Problemas durante a cria��o do Gr�fico de Barras.", e);
}
if(listRetorno != null && listRetorno.size()!= 0){
return "<img src=\"" + caminhoRelativo + "\"/>";
} else {
return null;
}
}
private Object generateRetornoGrafico_Pizza(boolean is3D, List listRetorno, GerencialItemInformationDTO gerencialItemDto, GerencialInfoGenerateDTO infoGenerate, Usuario usuario,
GerencialItemPainelDTO gerencialItemPainelAuxDto, HttpServletRequest request) {
JFreeChart chart;
DefaultPieDataset dados = new DefaultPieDataset();
Double objDouble;
String objString1;
if (listRetorno == null) {
listRetorno = new ArrayList();
}
for (int i = 0; i < listRetorno.size(); i++) {
Object[] row = (Object[]) listRetorno.get(i);
objDouble = new Double(0);
objString1 = "";
for (int j = 0; j < row.length; j++) {
Object obj = row[j];
GerencialFieldDTO fieldDto = (GerencialFieldDTO) ((List) gerencialItemDto.getListFields()).get(j);
if (fieldDto.getClassField().getName().equalsIgnoreCase("java.lang.Integer")) {
if (Integer.class.isInstance(obj)) {
objDouble = new Double(((Integer) obj).intValue());
} else if (Long.class.isInstance(obj)) {
objDouble = new Double(((Long) obj).intValue());
}
}
if (fieldDto.getClassField().getName().equalsIgnoreCase("java.lang.Double")) {
objDouble = null;
if (Integer.class.isInstance(obj)) {
objDouble = new Double(((Integer) obj).doubleValue());
} else {
if (BigDecimal.class.isInstance(obj)) {
objDouble = new Double(((BigDecimal) obj).doubleValue());
} else if (Long.class.isInstance(obj)) {
objDouble = new Double(((Long) obj).doubleValue());
} else if (Integer.class.isInstance(obj)) {
objDouble = new Double(((Integer) obj).doubleValue());
} else if (BigInteger.class.isInstance(obj)) {
objDouble = new Double(((BigInteger) obj).doubleValue());
} else {
objDouble = (Double) obj;
}
}
if (objDouble == null) {
objDouble = new Double(0);
}
}
if (fieldDto.getClassField().getName().equalsIgnoreCase("java.lang.String")) {
if (obj == null) {
obj = new String("");
}
objString1 = (String) obj;
}
}
dados.setValue(objString1, objDouble.doubleValue());
}
if (is3D) {
chart = ChartFactory.createPieChart3D(UtilI18N.internacionaliza(request, gerencialItemDto.getTitle()), dados, true, true, false);
} else {
chart = ChartFactory.createPieChart(UtilI18N.internacionaliza(request, gerencialItemDto.getTitle()), dados, true, true, false);
}
chart.setBackgroundPaint(COR_FUNDO);
chart.getTitle().setPaint(COR_TITULO);
chart.getTitle().setFont(new java.awt.Font("arial", Font.BOLD, 12));
chart.getPlot().setOutlinePaint(null);
chart.getPlot().setBackgroundPaint(new Color(221, 227, 213));
PiePlot piePlot = (PiePlot) chart.getPlot();
piePlot.setNoDataMessage(UtilI18N.internacionaliza(request, "citcorpore.comum.naoHaDadosParaApresentar"));
if(gerencialItemDto.isPorcentagem())
piePlot.setLabelGenerator(new StandardPieSectionLabelGenerator("({0}) {1} - {2}"));
else
piePlot.setLabelGenerator(new StandardPieSectionLabelGenerator("{0} = {1}", new DecimalFormat("0"), new DecimalFormat("0")));
String caminhoRelativo = "";
String caminho = "";
try {
File arquivo = new File(infoGenerate.getCaminhoArquivosGraficos());
if (!arquivo.exists()) {
arquivo.mkdirs();
}
File arquivoVer = new File(infoGenerate.getCaminhoArquivosGraficos() + "/" + usuario.getIdUsuario());
if (!arquivoVer.exists()) {
arquivoVer.mkdirs();
}
// caminho = infoGenerate.getCaminhoArquivosGraficos() + "/" + usuario.getIdUsuario() + "/" +
// UtilStrings.generateNomeBusca(UtilStrings.removeCaracteresEspeciais(gerencialItemDto.getDescription())) + ".png";
// caminhoRelativo = br.com.citframework.util.Constantes.getValue("SERVER_ADDRESS") + br.com.citframework.util.Constantes.getValue("CONTEXTO_APLICACAO") + "/tempFiles" + "/" +
// usuario.getIdUsuario() + "/" + UtilStrings.generateNomeBusca(UtilStrings.removeCaracteresEspeciais(gerencialItemDto.getDescription())) + ".png";
caminho = infoGenerate.getCaminhoArquivosGraficos() + "/" + usuario.getIdUsuario() + "/"
+ UtilStrings.generateNomeBusca(UtilStrings.removeCaracteresEspeciais(gerencialItemDto.getDescription())) + "_"
+ UtilDatas.convertDateToString(TipoDate.TIMESTAMP_WITH_SECONDS, UtilDatas.getDataHoraAtual(), WebUtil.getLanguage(request)).replaceAll("/", "_").replaceAll(":", "_").replaceAll(" ", "_") + ".png";
String urlInicial = "";
try {
//urlInicial = ParametroUtil.getValorParametroCitSmartHashMap(Enumerados.ParametroSistema.URL_Sistema, "");
} catch (Exception e) {
e.printStackTrace();
}
if (urlInicial == null || urlInicial.trim().equalsIgnoreCase("")){
urlInicial = Constantes.getValue("CONTEXTO_APLICACAO");
}
caminhoRelativo = urlInicial + "/tempFiles" + "/" + usuario.getIdUsuario() + "/" + UtilStrings.generateNomeBusca(UtilStrings.removeCaracteresEspeciais(gerencialItemDto.getDescription()))
+ "_" + UtilDatas.convertDateToString(TipoDate.TIMESTAMP_WITH_SECONDS, UtilDatas.getDataHoraAtual(), WebUtil.getLanguage(request)).replaceAll("/", "_").replaceAll(":", "_").replaceAll(" ", "_") + ".png";
caminhoRelativoAuxiliar = caminhoRelativo;
arquivo = new File(caminho);
if (arquivo.exists()) {
arquivo.delete();
}
int tam = Integer.parseInt(UtilStrings.apenasNumeros(gerencialItemPainelAuxDto.getWidth()));
int alt = Integer.parseInt(UtilStrings.apenasNumeros(gerencialItemPainelAuxDto.getHeigth()));
tam = tam - 15;
alt = alt - 70;
ChartUtilities.saveChartAsPNG(arquivo, chart, tam, alt);
LOGGER.info(UtilI18N.internacionaliza(request, "citcorpore.comum.graficoPizzaGerado") + ":\n\t" + caminho);
} catch (IOException e) {
LOGGER.error(UtilI18N.internacionaliza(request, "citcorpore.comum.problemasDuranteCriacaoGraficoBarras"), e);
}
if(listRetorno != null && listRetorno.size()!= 0){
return "<img src=\"" + caminhoRelativo + "\"/>";
} else {
return null;
}
}
private Object generateRetornoGrafico_Linha(boolean is3D, List listRetorno, GerencialItemInformationDTO gerencialItemDto, GerencialInfoGenerateDTO infoGenerate, Usuario usuario,
GerencialItemPainelDTO gerencialItemPainelAuxDto, HttpServletRequest request) throws Exception {
JFreeChart chart;
DefaultCategoryDataset dados = new DefaultCategoryDataset();
Double objDouble;
String objString1;
String objString2 = gerencialItemDto.getTitle();
int posString = 0;
for (int i = 0; i < listRetorno.size(); i++) {
Object[] row = (Object[]) listRetorno.get(i);
objDouble = new Double(0);
objString1 = "";
objString2 = gerencialItemDto.getTitle();
posString = 0;
for (int j = 0; j < row.length; j++) {
Object obj = row[j];
GerencialFieldDTO fieldDto = (GerencialFieldDTO) ((List) gerencialItemDto.getListFields()).get(j);
if (fieldDto.getClassField().getName().equalsIgnoreCase("java.lang.Integer")) {
if (Integer.class.isInstance(obj)) {
objDouble = new Double(((Integer) obj).intValue());
} else if (Long.class.isInstance(obj)) {
objDouble = new Double(((Long) obj).intValue());
}
}
if (fieldDto.getClassField().getName().equalsIgnoreCase("java.lang.Double")) {
objDouble = null;
if (Integer.class.isInstance(obj)) {
objDouble = new Double(((Integer) obj).doubleValue());
} else {
if (BigDecimal.class.isInstance(obj)) {
objDouble = new Double(((BigDecimal) obj).doubleValue());
} else if (Long.class.isInstance(obj)) {
objDouble = new Double(((Long) obj).doubleValue());
} else if (Integer.class.isInstance(obj)) {
objDouble = new Double(((Integer) obj).doubleValue());
} else if (BigInteger.class.isInstance(obj)) {
objDouble = new Double(((BigInteger) obj).doubleValue());
} else {
objDouble = (Double) obj;
}
}
if (objDouble == null) {
objDouble = new Double(0);
}
}
if (fieldDto.getClassField().getName().equalsIgnoreCase("java.lang.String")) {
if (obj == null) {
obj = new String("");
}
String str = "";
if (Integer.class.isInstance(obj)) {
str = "" + (Integer) obj;
} else {
if (BigDecimal.class.isInstance(obj)) {
str = obj.toString();
} else {
str = (String) obj;
}
}
if (posString == 0) {
objString1 = str;
} else {
objString2 = str;
}
posString++;
}
}
dados.addValue(objDouble.doubleValue(), objString2, objString1);
}
if (is3D) {
chart = ChartFactory.createLineChart3D(UtilI18N.internacionaliza(request, gerencialItemDto.getTitle()), null, null, dados, PlotOrientation.VERTICAL, true, true, false);
} else {
chart = ChartFactory.createLineChart(UtilI18N.internacionaliza(request, gerencialItemDto.getTitle()), null, null, dados, PlotOrientation.VERTICAL, true, true, false);
}
// Setando o valor maximo para nunca passar de 100, ja q se trata de
// porcentagem
CategoryPlot plot = chart.getCategoryPlot();
NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis();
rangeAxis.setUpperMargin(0.09);
// Formatando cores de fundo, fonte do titulo, etc...
chart.setBackgroundPaint(COR_FUNDO); // Cor do fundo do grafico
chart.getTitle().setPaint(COR_TITULO); // Cor do titulo
chart.getTitle().setFont(new java.awt.Font("arial", Font.BOLD, 12)); // Fonte do
// titulo
chart.getPlot().setBackgroundPaint(new Color(221, 227, 213));// Cor de
// fundo da
// plot (area
// do grafico)
chart.setBorderVisible(false); // Visibilidade da borda do grafico
// Marcador de M�dia de Resolubilidade
// IntervalMarker target = new IntervalMarker(y - 0.3, y + 0.3);// A
// principio, a m�dia ser� o TOTAL-MF
/*
* target.setLabel(" Resolubilidade Midia"); target.setLabelFont(new Font("arial", Font.BOLD, 12)); target.setLabelPaint(Color.RED); target.setLabelAnchor(RectangleAnchor.CENTER);
* target.setLabelTextAnchor(TextAnchor.BOTTOM_CENTER);
*/
// target.setPaint(Color.RED); // Cor da linha marcadora
// plot.addRangeMarker(target, Layer.FOREGROUND);
String caminhoRelativo = "";
String caminho = "";
try {
File arquivo = new File(infoGenerate.getCaminhoArquivosGraficos());
if (!arquivo.exists()) {
arquivo.mkdirs();
}
File arquivoVer = new File(infoGenerate.getCaminhoArquivosGraficos() + "/" + usuario.getIdUsuario());
if (!arquivoVer.exists()) {
arquivoVer.mkdirs();
}
// caminho = infoGenerate.getCaminhoArquivosGraficos() + "/" + usuario.getIdUsuario() + "/" +
// UtilStrings.generateNomeBusca(UtilStrings.removeCaracteresEspeciais(gerencialItemDto.getDescription())) + ".png";
// caminhoRelativo = br.com.citframework.util.Constantes.getValue("SERVER_ADDRESS") + br.com.citframework.util.Constantes.getValue("CONTEXTO_APLICACAO") + "/tempFiles" + "/" +
// usuario.getIdUsuario() + "/" + UtilStrings.generateNomeBusca(UtilStrings.removeCaracteresEspeciais(gerencialItemDto.getDescription())) + ".png";
caminho = infoGenerate.getCaminhoArquivosGraficos() + "/" + usuario.getIdUsuario() + "/"
+ UtilStrings.generateNomeBusca(UtilStrings.removeCaracteresEspeciais(gerencialItemDto.getDescription())) + "_"
+ UtilDatas.convertDateToString(TipoDate.TIMESTAMP_WITH_SECONDS, UtilDatas.getDataHoraAtual(), WebUtil.getLanguage(request)).replaceAll("/", "_").replaceAll(":", "_").replaceAll(" ", "_") + ".png";
// caminhoRelativo = br.com.citframework.util.Constantes.getValue("SERVER_ADDRESS") + br.com.citframework.util.Constantes.getValue("CONTEXTO_APLICACAO") + "/tempFiles" + "/" +
// usuario.getIdUsuario() + "/" + UtilStrings.generateNomeBusca(UtilStrings.removeCaracteresEspeciais(gerencialItemDto.getDescription())) + "_" +
// UtilDatas.formatTimestamp(UtilDatas.getDataHoraAtual()).replaceAll("/", "_").replaceAll(":", "_").replaceAll(" ", "_") + ".png";
String urlInicial = "";
if (urlInicial == null || urlInicial.trim().equalsIgnoreCase("")){
urlInicial = Constantes.getValue("CONTEXTO_APLICACAO");
}
caminhoRelativo = urlInicial + "/tempFiles" + "/" + usuario.getIdUsuario() + "/"
+ UtilStrings.generateNomeBusca(UtilStrings.removeCaracteresEspeciais(gerencialItemDto.getDescription())) + "_"
+ UtilDatas.convertDateToString(TipoDate.TIMESTAMP_WITH_SECONDS, UtilDatas.getDataHoraAtual(), WebUtil.getLanguage(request)).replaceAll("/", "_").replaceAll(":", "_").replaceAll(" ", "_") + ".png";
caminhoRelativoAuxiliar = caminhoRelativo;
arquivo = new File(caminho);
if (arquivo.exists()) {
arquivo.delete();
}
int tam = Integer.parseInt(UtilStrings.apenasNumeros(gerencialItemPainelAuxDto.getWidth()));
int alt = Integer.parseInt(UtilStrings.apenasNumeros(gerencialItemPainelAuxDto.getHeigth()));
tam = tam - 15;
alt = alt - 70;
ChartUtilities.saveChartAsPNG(arquivo, chart, tam, alt);
LOGGER.info("Grafico de Linhas gerado em:\n\t" + caminho);
} catch (IOException e) {
LOGGER.error("Problemas durante a cria��o do Gr�fico de Barras.", e);
}
if(listRetorno != null && listRetorno.size()!= 0){
return "<img src=\"" + caminhoRelativo + "\"/>";
} else {
return null;
}
}
private Object generateRetornoPDF(List listRetorno, GerencialItemInformationDTO gerencialItemDto, GerencialInfoGenerateDTO infoGenerate, Usuario usuario,
GerencialItemPainelDTO gerencialItemPainelAuxDto, Collection colParmsUtilizadosNoSQL, HashMap hshParameters, Collection colDefinicaoParametros, GerencialPainelDTO gerencialPainelDto,
HttpServletRequest request) throws Exception {
if (infoGenerate.getTipoSaidaApresentada().equalsIgnoreCase("GRAPH") && gerencialItemDto.isGraph()) {
return generateRetornoPDF_Graph(listRetorno, gerencialItemDto, infoGenerate, usuario, gerencialItemPainelAuxDto, colParmsUtilizadosNoSQL, hshParameters, colDefinicaoParametros,
gerencialPainelDto, request);
} else {
return generateRetornoPDF_Table(listRetorno, gerencialItemDto, infoGenerate, usuario, gerencialItemPainelAuxDto, colParmsUtilizadosNoSQL, hshParameters, colDefinicaoParametros,
gerencialPainelDto, request);
}
}
private Object generateRetornoPDF_Table(List listRetorno, GerencialItemInformationDTO gerencialItemDto, GerencialInfoGenerateDTO infoGenerate, Usuario usuario,
GerencialItemPainelDTO gerencialItemPainelAuxDto, Collection colParmsUtilizadosNoSQL, HashMap hshParameters, Collection colDefinicaoParametros, GerencialPainelDTO gerencialPainelDto,
HttpServletRequest request) throws LogicException {
if (listRetorno == null) {
return null;
}
Double[][] totals = new Double[100][100];
Double[][] counts = new Double[100][100];
String[][] anteriorValue = new String[100][100];
Double[] totalLinha = new Double[100];
Double[] countLinha = new Double[100];
boolean[][] isTotals = new boolean[100][100];
boolean[][] isCounts = new boolean[100][100];
boolean[] temItensNoGrupo = new boolean[100];
int colunasGrupos[] = new int[100];
int qtdeColunas = 0;
int qtdeColunasSemAgrupadores = 0;
int qtdeColunasAgrupadoras = 0;
boolean temTotals = false;
boolean temCounts = false;
boolean existeAgrupador = false;
Document document = null;
if ("L".equalsIgnoreCase(gerencialItemDto.getReportPageLayout())) { // Se Landscape
document = new Document(PageSize.A4.rotate(), 20, 20, 100, 40);
} else {
document = new Document(PageSize.A4, 20, 20, 100, 40);
}
PdfWriter writer = null;
if (usuario.getIdUsuario() == null || usuario.getIdUsuario().equalsIgnoreCase("null")) {
usuario.setIdUsuario("0");
}
String caminho = "";
String caminhoRelativo = "";
try {
File arquivo = new File(infoGenerate.getCaminhoArquivosPdfs());
if (!arquivo.exists()) {
arquivo.mkdirs();
}
File arquivoVer = new File(infoGenerate.getCaminhoArquivosPdfs() + "/" + usuario.getIdUsuario());
if (!arquivoVer.exists()) {
arquivoVer.mkdirs();
}
caminho = infoGenerate.getCaminhoArquivosPdfs() + "/" + usuario.getIdUsuario() + "/"
+ UtilStrings.generateNomeBusca(UtilStrings.removeCaracteresEspeciais(gerencialItemDto.getDescription()))
+ UtilDatas.convertDateToString(TipoDate.TIMESTAMP_WITH_SECONDS, UtilDatas.getDataHoraAtual(), WebUtil.getLanguage(request)).replaceAll("/", "_").replaceAll(":", "_").replaceAll(" ", "_")
+".pdf";
// caminhoRelativo = br.com.citframework.util.Constantes.getValue("SERVER_ADDRESS") + br.com.citframework.util.Constantes.getValue("CONTEXTO_APLICACAO") + "/tempFiles" + "/" +
// usuario.getIdUsuario() + "/" + UtilStrings.generateNomeBusca(UtilStrings.removeCaracteresEspeciais(gerencialItemDto.getDescription())) + ".pdf";
String urlInicial = "";
if (urlInicial == null || urlInicial.trim().equalsIgnoreCase("")){
urlInicial = Constantes.getValue("CONTEXTO_APLICACAO");
}
caminhoRelativo = urlInicial + "/tempFiles" + "/" + usuario.getIdUsuario() + "/"
+ UtilStrings.generateNomeBusca(UtilStrings.removeCaracteresEspeciais(gerencialItemDto.getDescription()))
+ UtilDatas.convertDateToString(TipoDate.TIMESTAMP_WITH_SECONDS, UtilDatas.getDataHoraAtual(), WebUtil.getLanguage(request)).replaceAll("/", "_").replaceAll(":", "_").replaceAll(" ", "_")
+ ".pdf";
arquivo = new File(caminho);
if (arquivo.exists()) {
arquivo.delete();
}
writer = PdfWriter.getInstance(document, new FileOutputStream(caminho));
document.open();
} catch (Exception e) {
e.printStackTrace();
// handle exception
}
int tamTabela = 1;
int[] tamanhoColunas = null;
int[] tamanhoColunasReal = null;
int iAux = 0;
if (listRetorno != null && listRetorno.size() > 0) {
Object[] row = (Object[]) listRetorno.get(0);
tamanhoColunas = new int[row.length];
for (int j = 0; j < row.length; j++) {
GerencialFieldDTO fieldDto = (GerencialFieldDTO) ((List) gerencialItemDto.getListFields()).get(j);
GerencialGroupDTO grupoDefinicaoDto = fieldInGroupDefinition(fieldDto.getName(), gerencialItemDto.getListGroups());
if (grupoDefinicaoDto == null) { // So mostra se nao for um agrupador
qtdeColunasSemAgrupadores++;
tamanhoColunas[iAux] = Integer.parseInt(UtilStrings.apenasNumeros(fieldDto.getWidth()));
iAux++;
} else {
colunasGrupos[qtdeColunasAgrupadoras] = j;
qtdeColunasAgrupadoras++;
existeAgrupador = true;
}
}
tamTabela = qtdeColunasSemAgrupadores;
}
tamanhoColunasReal = new int[qtdeColunasSemAgrupadores];
for (int j = 0; j < qtdeColunasSemAgrupadores; j++) {
tamanhoColunasReal[j] = tamanhoColunas[j];
}
PdfPTable table = new PdfPTable(tamTabela);
table.setWidthPercentage(100);
Rectangle page = document.getPageSize();
if (page.getWidth() > 600) {
PdfPCell prime1 = new PdfPCell();
prime1.setPhrase(new Phrase(" "));
prime1.setColspan(tamTabela);
prime1.setBorder(0);
PdfPCell prime2 = new PdfPCell();
prime2.setPhrase(new Phrase(" "));
prime2.setColspan(tamTabela);
table.addCell(prime1);
table.addCell(prime2);
}
try {
if (tamanhoColunasReal != null && tamanhoColunasReal.length > 0) {
table.setWidths(tamanhoColunasReal);
}
} catch (DocumentException e1) {
e1.printStackTrace();
}
EndPageControl endPageControl = new EndPageControl(existeAgrupador, gerencialItemDto, table, listRetorno, tamTabela, tamanhoColunasReal, UtilI18N.internacionaliza(request,
gerencialItemDto.getTitle()), colParmsUtilizadosNoSQL, hshParameters, colDefinicaoParametros, gerencialPainelDto, request);
writer.setPageEvent(endPageControl);
for (int i = 0; i < listRetorno.size(); i++) {
Object[] row = (Object[]) listRetorno.get(i);
boolean quebrouLinha = false;
int indiceGrupoAdicionado = 0;
for (int x = 0; x < totalLinha.length; x++) {
totalLinha[x] = new Double(0);
countLinha[x] = new Double(0);
}
int j = 0;
PdfPCell[] cell = new PdfPCell[100];
qtdeColunas = row.length;
for (int z = 0; z < row.length; z++) {
Object obj = row[z];
GerencialFieldDTO fieldDto = (GerencialFieldDTO) ((List) gerencialItemDto.getListFields()).get(z);
GerencialGroupDTO grupoDefinicaoDto = fieldInGroupDefinition(fieldDto.getName(), gerencialItemDto.getListGroups());
if (obj != null) {
String valorAtualAux = null;
if (totals[totals.length - 1][z] == null) {
totals[totals.length - 1][z] = new Double(0);
}
if (counts[totals.length - 1][z] == null) {
counts[totals.length - 1][z] = new Double(0);
}
// O trecho abaixo server para controlar totalizacoes dos grupos
if (totalLinha[z] == null) {
totalLinha[z] = new Double(0);
}
if (countLinha[z] == null) {
countLinha[z] = new Double(0);
}
if (fieldDto.getClassField().getName().equalsIgnoreCase("java.lang.String")) {
String objString = "";
if (Integer.class.isInstance(obj)) {
objString = "" + ((Integer) obj).intValue();
} else {
if (BigDecimal.class.isInstance(obj)) {
objString = obj.toString();
} else {
objString = (String) obj;
}
}
valorAtualAux = objString;
if (grupoDefinicaoDto == null) {
if (cell[j] == null) {
cell[j] = new PdfPCell();
}
cell[j].setHorizontalAlignment(Element.ALIGN_LEFT);
if (objString != null) {
cell[j].setPhrase(new Phrase(objString));
} else {
cell[j].setPhrase(new Phrase(" "));
}
}
if (fieldDto.isCount()) {
temCounts = true;
counts[counts.length - 1][z] = new Double(counts[counts.length - 1][z].doubleValue() + 1);
isCounts[counts.length - 1][z] = true;
countLinha[z] = new Double(countLinha[z].doubleValue() + 1);
}
}
if (fieldDto.getClassField().getName().equalsIgnoreCase("java.lang.Double")) {
Double objDouble = null;
if (Integer.class.isInstance(obj)) {
objDouble = new Double(((Integer) obj).doubleValue());
} else {
if (BigDecimal.class.isInstance(obj)) {
objDouble = new Double(((BigDecimal) obj).doubleValue());
} else if (Long.class.isInstance(obj)) {
objDouble = new Double(((Long) obj).doubleValue());
} else if (Integer.class.isInstance(obj)) {
objDouble = new Double(((Integer) obj).doubleValue());
} else if (BigInteger.class.isInstance(obj)) {
objDouble = new Double(((BigInteger) obj).doubleValue());
} else {
objDouble = (Double) obj;
}
}
if (objDouble == null) {
objDouble = new Double(0);
}
valorAtualAux = objDouble.toString();
if (grupoDefinicaoDto == null) {
if (cell[j] == null) {
cell[j] = new PdfPCell();
}
cell[j].setHorizontalAlignment(Element.ALIGN_RIGHT);
cell[j].setPhrase(new Phrase(UtilFormatacao.formatDouble(objDouble, fieldDto.getDecimals().intValue())));
}
if (fieldDto.isTotals()) {
temTotals = true;
totals[counts.length - 1][z] = new Double(totals[counts.length - 1][z].doubleValue() + objDouble.doubleValue());
isTotals[counts.length - 1][z] = true;
totalLinha[z] = new Double(totalLinha[z].doubleValue() + objDouble.doubleValue());
}
if (fieldDto.isCount()) {
temCounts = true;
counts[counts.length - 1][z] = new Double(counts[counts.length - 1][z].doubleValue() + 1);
isCounts[counts.length - 1][z] = true;
countLinha[z] = new Double(countLinha[z].doubleValue() + 1);
}
}
if (fieldDto.getClassField().getName().equalsIgnoreCase("java.lang.Integer")) {
Integer objInteger = null;
if (Integer.class.isInstance(obj)) {
objInteger = (Integer) obj;
} else {
Long objLong = (Long) obj;
if (objLong != null) {
objInteger = new Integer(objLong.intValue());
} else {
objInteger = new Integer(0);
}
}
if (grupoDefinicaoDto == null) {
if (cell[j] == null) {
cell[j] = new PdfPCell();
}
cell[j].setHorizontalAlignment(Element.ALIGN_RIGHT);
cell[j].setPhrase(new Phrase("" + objInteger));
}
if (objInteger != null)
valorAtualAux = objInteger.toString();
else
valorAtualAux = null;
if (fieldDto.isTotals()) {
temTotals = true;
totals[counts.length - 1][z] = new Double(totals[counts.length - 1][z].doubleValue() + objInteger.intValue());
isTotals[counts.length - 1][z] = true;
totalLinha[z] = new Double(totalLinha[z].doubleValue() + objInteger.intValue());
}
if (fieldDto.isCount()) {
temCounts = true;
counts[counts.length - 1][z] = new Double(counts[counts.length - 1][z].doubleValue() + 1);
isCounts[counts.length - 1][z] = true;
countLinha[z] = new Double(countLinha[z].doubleValue() + 1);
}
}
if (fieldDto.getClassField().getName().equalsIgnoreCase("java.sql.Date")) {
Date objDate = null;
if (Timestamp.class.isInstance(obj)) {
objDate = new java.sql.Date(((Timestamp) obj).getTime());
} else if (Date.class.isInstance(obj)) {
objDate = (Date) obj;
}
if (objDate != null) {
//valorAtualAux = UtilDatas.dateToSTR(objDate);
valorAtualAux = UtilDatas.convertDateToString(UtilDatas.getTipoDate(objDate.toString(), WebUtil.getLanguage(request)), objDate, WebUtil.getLanguage(request));
if (grupoDefinicaoDto == null) {
if (cell[j] == null) {
cell[j] = new PdfPCell();
}
cell[j].setHorizontalAlignment(Element.ALIGN_LEFT);
cell[j].setPhrase(new Phrase("" + UtilDatas.convertDateToString(UtilDatas.getTipoDate(objDate.toString(), WebUtil.getLanguage(request)), objDate, WebUtil.getLanguage(request))));
}
} else {
valorAtualAux = null;
if (grupoDefinicaoDto == null) {
if (cell[j] == null) {
cell[j] = new PdfPCell();
}
cell[j].setHorizontalAlignment(Element.ALIGN_LEFT);
cell[j].setPhrase(new Phrase(" "));
}
}
if (fieldDto.isCount()) {
temCounts = true;
counts[counts.length - 1][z] = new Double(counts[counts.length - 1][z].doubleValue() + 1);
isCounts[counts.length - 1][z] = true;
countLinha[z] = new Double(countLinha[z].doubleValue() + 1);
}
}
if (grupoDefinicaoDto != null) { // Encontrou definicao de Grupo para este campo.
if (!valorAtualAux.equalsIgnoreCase(anteriorValue[0][z])) {
// Quebrou - Entra neste trecho
// Verifica se tem totalizacao, se sim, entao gera os totais.
if (temCounts || temTotals) {
for (int x = temItensNoGrupo.length - 1; x >= z; x--) {
if (temItensNoGrupo[x]) {
geraTotaisPDF(table, qtdeColunas, x, gerencialItemDto, isCounts, isTotals, totals, counts, infoGenerate.getHashParametros());
PdfPCell p = new PdfPCell();
p.setHorizontalAlignment(Element.ALIGN_LEFT);
p.setColspan(qtdeColunasSemAgrupadores);
p.setPhrase(new Phrase(" "));
p.setBorder(Rectangle.NO_BORDER);
table.addCell(p);
}
}
for (int x = z; x < temItensNoGrupo.length; x++) {
temItensNoGrupo[x] = false;
}
}
indiceGrupoAdicionado = z;
String aux = "";
for (int x = 0; x < z; x++)
aux += " ";
PdfPCell p = new PdfPCell();
p.setHorizontalAlignment(Element.ALIGN_LEFT);
p.setColspan(qtdeColunasSemAgrupadores);
if (fieldDto.getTitle() != null && !fieldDto.getTitle().trim().equalsIgnoreCase("")) {
p.setPhrase(new Phrase(aux + UtilI18N.internacionaliza(request, fieldDto.getTitle()) + ": " + valorAtualAux + ""));
} else {
p.setPhrase(new Phrase(aux + valorAtualAux + ""));
}
p.setBackgroundColor(Color.LIGHT_GRAY);
table.addCell(p);
quebrouLinha = true;
}
} else {
j++;
}
anteriorValue[0][z] = valorAtualAux; // O Valor Atual passa a ser o Valor Anterior.
} else {
if (grupoDefinicaoDto == null) {
if (cell[j] == null) {
cell[j] = new PdfPCell();
}
cell[j].setHorizontalAlignment(Element.ALIGN_LEFT);
cell[j].setPhrase(new Phrase(" "));
j++;
// table.addCell(" ");
}
}
}
if (quebrouLinha) {
geraCabecalhoPDF(row.length, gerencialItemDto, table, request);
}
for (int x = 0; x < qtdeColunasAgrupadoras; x++) {
for (int z = 0; z < qtdeColunas; z++) {
if (totals[colunasGrupos[x]][z] == null) {
totals[colunasGrupos[x]][z] = new Double(0);
}
if (counts[colunasGrupos[x]][z] == null) {
counts[colunasGrupos[x]][z] = new Double(0);
}
if (totalLinha[z] == null) {
totalLinha[z] = new Double(0);
}
if (countLinha[z] == null) {
countLinha[z] = new Double(0);
}
totals[colunasGrupos[x]][z] = new Double(totals[colunasGrupos[x]][z].doubleValue() + totalLinha[z].doubleValue());
counts[colunasGrupos[x]][z] = new Double(counts[colunasGrupos[x]][z].doubleValue() + countLinha[z].doubleValue());
}
}
for (int x = 0; x < j; x++) {
if (cell[x] != null) {
table.addCell(cell[x]);
}
}
if (existeAgrupador)
temItensNoGrupo[indiceGrupoAdicionado] = true;
}
if (temCounts || temTotals) {
for (int x = temItensNoGrupo.length - 1; x >= 0; x--) {
if (temItensNoGrupo[x]) {
geraTotaisPDF(table, qtdeColunas, x, gerencialItemDto, isCounts, isTotals, totals, counts, infoGenerate.getHashParametros());
//Adiciona uma linha em branco
PdfPCell space = new PdfPCell();
space.setHorizontalAlignment(Element.ALIGN_LEFT);
space.setColspan(qtdeColunasSemAgrupadores);
space.setPhrase(new Phrase(" "));
space.setBorder(Rectangle.NO_BORDER);
table.addCell(space);
}
}
// Adiciona uma linha em branco
PdfPCell space = new PdfPCell();
space.setHorizontalAlignment(Element.ALIGN_LEFT);
space.setColspan(qtdeColunasSemAgrupadores);
space.setPhrase(new Phrase(" "));
space.setBorder(Rectangle.NO_BORDER);
table.addCell(space);
/*
* Rodrigo Pecci Acorse - 30/01/2014 10h00 - #132390
* Adiciona a soma total dos itens no relat�rio
*/
String somaTotal = geraSomaTotal(listRetorno, gerencialItemPainelAuxDto, gerencialItemDto, request);
if (!somaTotal.equals("")) {
// Adiciona uma linha em branco
PdfPCell space1 = new PdfPCell();
space1.setHorizontalAlignment(Element.ALIGN_RIGHT);
space1.setPhrase(new Phrase(" "));
//space.setBackgroundColor(Color.LIGHT_GRAY);
space1.setBorder(Rectangle.NO_BORDER);
table.addCell(space1);
table.getDefaultCell().setHorizontalAlignment(Element.ALIGN_LEFT);
PdfPCell cell = new PdfPCell();
cell.setBackgroundColor(Color.LIGHT_GRAY);
cell.setPhrase(new Phrase(somaTotal));
table.addCell(cell);
}
//Adiciona o total de registros (linhas) no relat�rio
geraTotaisPDF(table, qtdeColunas, counts.length - 1, gerencialItemDto, isCounts, isTotals, totals, counts, infoGenerate.getHashParametros());
}
try {
document.add(table);
} catch (DocumentException e) {
e.printStackTrace();
}
try {
document.close();
} catch (Exception e) {
e.printStackTrace();
}
if(listRetorno!= null && listRetorno.size() !=0){
return caminhoRelativo;
} else {
return null;
}
}
public void geraCabecalhoPDF(int tam, GerencialItemInformationDTO gerencialItemDto, PdfPTable table, HttpServletRequest request) {
for (int j = 0; j < tam; j++) {
PdfPCell cell = new PdfPCell();
GerencialFieldDTO fieldDto = (GerencialFieldDTO) ((List) gerencialItemDto.getListFields()).get(j);
GerencialGroupDTO grupoDefinicaoDto = fieldInGroupDefinition(fieldDto.getName(), gerencialItemDto.getListGroups());
if (grupoDefinicaoDto == null) { // So mostra se nao for um agrupador
if (fieldDto.getClassField().getName().equalsIgnoreCase("java.lang.String")) {
table.getDefaultCell().setHorizontalAlignment(Element.ALIGN_LEFT);
cell.setHorizontalAlignment(Element.ALIGN_LEFT);
}
if (fieldDto.getClassField().getName().equalsIgnoreCase("java.lang.Double")) {
table.getDefaultCell().setHorizontalAlignment(Element.ALIGN_RIGHT);
cell.setHorizontalAlignment(Element.ALIGN_RIGHT);
}
if (fieldDto.getClassField().getName().equalsIgnoreCase("java.lang.Integer")) {
table.getDefaultCell().setHorizontalAlignment(Element.ALIGN_RIGHT);
cell.setHorizontalAlignment(Element.ALIGN_RIGHT);
}
if (fieldDto.getClassField().getName().equalsIgnoreCase("java.sql.Date")) {
table.getDefaultCell().setHorizontalAlignment(Element.ALIGN_LEFT);
cell.setHorizontalAlignment(Element.ALIGN_LEFT);
}
cell.setBackgroundColor(Color.GRAY);
cell.setPhrase(new Phrase(UtilI18N.internacionaliza(request, fieldDto.getTitle())));
table.addCell(cell);
}
}
}
private void geraTotaisPDF(PdfPTable table, int qtdeColunas, int indice, GerencialItemInformationDTO gerencialItemDto, boolean[][] isCounts, boolean[][] isTotals, Double[][] totals,
Double[][] counts, HashMap parametersValues) {
boolean jaEntrou = false;
String quantidadeTotalRegistros = (String) parametersValues.get("citcorpore.comum.quantidadeDeOrigens");
String quantidadeRegistros = (String) parametersValues.get("citcorpore.comum.quantidadeRegistros");
for (int j = 0; j < qtdeColunas; j++) {
GerencialFieldDTO fieldDto = (GerencialFieldDTO) ((List) gerencialItemDto.getListFields()).get(j);
GerencialGroupDTO grupoDefinicaoDto = fieldInGroupDefinition(fieldDto.getName(), gerencialItemDto.getListGroups());
if (grupoDefinicaoDto == null) {
if (isCounts[counts.length - 1][j]) {
jaEntrou = true;
table.getDefaultCell().setHorizontalAlignment(Element.ALIGN_LEFT);
PdfPCell cell = new PdfPCell();
cell.setBackgroundColor(Color.LIGHT_GRAY);
String strQtdeItens = quantidadeRegistros + ": ";
if (indice == counts.length - 1) {
strQtdeItens = quantidadeTotalRegistros + ": ";
}
cell.setPhrase(new Phrase(strQtdeItens + UtilFormatacao.formatDouble(counts[indice][j], 0)));
table.addCell(cell);
counts[indice][j] = new Double(0);
} else if (isTotals[counts.length - 1][j]) {
jaEntrou = true;
table.getDefaultCell().setHorizontalAlignment(Element.ALIGN_RIGHT);
PdfPCell cell = new PdfPCell();
cell.setBackgroundColor(Color.LIGHT_GRAY);
cell.setHorizontalAlignment(Element.ALIGN_RIGHT);
if (fieldDto.getClassField().getName().equalsIgnoreCase("java.lang.Double")) {
cell.setPhrase(new Phrase("" + UtilFormatacao.formatDouble(totals[indice][j], 2)));
} else {
cell.setPhrase(new Phrase("" + UtilFormatacao.formatDouble(totals[indice][j], 0)));
}
table.addCell(cell);
totals[indice][j] = new Double(0);
} else {
PdfPCell cell = new PdfPCell();
cell.setHorizontalAlignment(Element.ALIGN_RIGHT);
cell.setPhrase(new Phrase(" "));
if (!jaEntrou) {
cell.setBorder(Rectangle.NO_BORDER);
} else {
cell.setBackgroundColor(Color.LIGHT_GRAY);
}
table.addCell(cell);
}
}
}
}
//
private Object generateRetornoPDF_Graph(List listRetorno, GerencialItemInformationDTO gerencialItemDto, GerencialInfoGenerateDTO infoGenerate, Usuario usuario,
GerencialItemPainelDTO gerencialItemPainelAuxDto, Collection colParmsUtilizadosNoSQL, HashMap hshParameters, Collection colDefinicaoParametros, GerencialPainelDTO gerencialPainelDto,
HttpServletRequest request) throws Exception {
if (infoGenerate.getGraphType()!=null){
if (infoGenerate.getGraphType().equalsIgnoreCase("BARRA3D")) {
generateRetornoGrafico_Barra(true, listRetorno, gerencialItemDto, infoGenerate, usuario, gerencialItemPainelAuxDto, request);
} else if (infoGenerate.getGraphType().equalsIgnoreCase("BARRA2D")) {
generateRetornoGrafico_Barra(false, listRetorno, gerencialItemDto, infoGenerate, usuario, gerencialItemPainelAuxDto, request);
} else if (infoGenerate.getGraphType().equalsIgnoreCase("PIZZA3D")) {
generateRetornoGrafico_Pizza(true, listRetorno, gerencialItemDto, infoGenerate, usuario, gerencialItemPainelAuxDto, request);
} else if (infoGenerate.getGraphType().equalsIgnoreCase("PIZZA2D")) {
generateRetornoGrafico_Pizza(false, listRetorno, gerencialItemDto, infoGenerate, usuario, gerencialItemPainelAuxDto, request);
} else if (infoGenerate.getGraphType().equalsIgnoreCase("LINHA3D")) {
generateRetornoGrafico_Linha(true, listRetorno, gerencialItemDto, infoGenerate, usuario, gerencialItemPainelAuxDto, request);
} else if (infoGenerate.getGraphType().equalsIgnoreCase("LINHA2D")) {
generateRetornoGrafico_Linha(false, listRetorno, gerencialItemDto, infoGenerate, usuario, gerencialItemPainelAuxDto, request);
} else {
return null;
}
} else {
return null;
}
// String strUrlGraph = br.com.citframework.util.Constantes.getValue("SERVER_ADDRESS") + br.com.citframework.util.Constantes.getValue("CONTEXTO_APLICACAO") + "/tempFiles" + "/" +
// usuario.getIdUsuario() + "/" + UtilStrings.generateNomeBusca(UtilStrings.removeCaracteresEspeciais(gerencialItemDto.getDescription())) + ".png";
String strUrlGraph = caminhoRelativoAuxiliar;
String [] replace = strUrlGraph.split("citsmart/tempFiles");
Document document = null;
PdfWriter writer = null;
if ("L".equalsIgnoreCase(gerencialItemDto.getReportPageLayout())) { // Se Landscape
document = new Document(PageSize.A4.rotate());
document.setMargins(30, 10, 60, 30);// cleison
} else {
//document = new Document();
//document.setMargins(10, 10, 70 , 40);// cleison
document = new Document(PageSize.A4, 25, 20, 100, 30);
}
String caminho = "";
String caminhoRelativo = "";
try {
File arquivo = new File(infoGenerate.getCaminhoArquivosPdfs());
if (!arquivo.exists()) {
arquivo.mkdirs();
}
File arquivoVer = new File(infoGenerate.getCaminhoArquivosPdfs() + "/" + usuario.getIdUsuario());
if (!arquivoVer.exists()) {
arquivoVer.mkdirs();
}
caminho = infoGenerate.getCaminhoArquivosPdfs() + "/" + usuario.getIdUsuario() + "/"
+ UtilStrings.generateNomeBusca(UtilStrings.removeCaracteresEspeciais(gerencialItemDto.getDescription()))
+ UtilDatas.convertDateToString(TipoDate.TIMESTAMP_WITH_SECONDS, UtilDatas.getDataHoraAtual(), WebUtil.getLanguage(request)).replaceAll("/", "_").replaceAll(":", "_").replaceAll(" ", "_")
+".pdf";
// caminhoRelativo = br.com.citframework.util.Constantes.getValue("SERVER_ADDRESS") + br.com.citframework.util.Constantes.getValue("CONTEXTO_APLICACAO") + "/tempFiles" + "/" +
// usuario.getIdUsuario() + "/" + UtilStrings.generateNomeBusca(UtilStrings.removeCaracteresEspeciais(gerencialItemDto.getDescription())) + ".pdf";//
String urlInicial = "";
if (urlInicial == null || urlInicial.trim().equalsIgnoreCase("")){
urlInicial = Constantes.getValue("CONTEXTO_APLICACAO");
}
caminhoRelativo = urlInicial + "/tempFiles" + "/" + usuario.getIdUsuario() + "/"
+ UtilStrings.generateNomeBusca(UtilStrings.removeCaracteresEspeciais(gerencialItemDto.getDescription()))
+ UtilDatas.convertDateToString(TipoDate.TIMESTAMP_WITH_SECONDS, UtilDatas.getDataHoraAtual(), WebUtil.getLanguage(request)).replaceAll("/", "_").replaceAll(":", "_").replaceAll(" ", "_")
+".pdf";
arquivo = new File(caminho);
if (arquivo.exists()) {
arquivo.delete();
}
writer = PdfWriter.getInstance(document, new FileOutputStream(caminho));
writer.setPageEvent(new EndPageControl(false, null, null, null, 0, null, gerencialItemDto.getTitle(), colParmsUtilizadosNoSQL, hshParameters, colDefinicaoParametros, gerencialPainelDto,
request));
document.open();
// document.add(new Paragraph(gerencialItemDto.getTitle()));
// document.add(new Paragraph(" "));
} catch (Exception e) {
e.printStackTrace();
// handle exception
}
try {
document.add(new Paragraph(" "));
document.add(new Paragraph(" "));
document.add(new Paragraph(" "));
document.add(new Paragraph(" "));
// document.add(new Paragraph(gerencialItemDto.getTitle()));
} catch (DocumentException e2) {
e2.printStackTrace();
}
//foi comentado para funcionar corretamente, n�o sei o motivo mas tratar o caminho aqui dava nullpointer mesmo com o caminho certo.
/* URL url = null;
try {
url = new URL(infoGenerate.getCaminhoArquivosPdfs() + replace[1]);
} catch (MalformedURLException e) {
e.printStackTrace();
}*/
Image image = null;
try {
image = Image.getInstance(infoGenerate.getCaminhoArquivosPdfs() + replace[1]);
} catch (BadElementException e) {
e.printStackTrace();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
if (image != null) {
float intW = Integer.parseInt(gerencialItemPainelAuxDto.getWidth());
float intH = Integer.parseInt(gerencialItemPainelAuxDto.getHeigth());
float perc = 1;
if (intW > writer.getPageSize().getWidth()) {
float intNew = (writer.getPageSize().getWidth() - 50);
perc = (intNew) / intW;
intW = intNew;
intH = intH * perc; // Ajusta proporcionalmente para nao ocorrer distorcoes.
}
image.scaleAbsolute(intW, intH);
try {
document.add(image);
} catch (DocumentException e) {
e.printStackTrace();
}
}
/*
* Rodrigo Pecci Acorse - 30/01/2014 10h00 - #132390
* Adiciona a soma total dos itens no relat�rio
*/
String somaTotal = geraSomaTotal(listRetorno, gerencialItemPainelAuxDto, gerencialItemDto, request);
if (!somaTotal.equals("")) {
document.add(new Paragraph(somaTotal));
}
document.close();
if(listRetorno != null && listRetorno.size()!=0){
return caminhoRelativo;
} else {
return null;
}
}
private Object generateRetornoPDF_Buffer(String strRetorno, GerencialItemInformationDTO gerencialItemDto, GerencialInfoGenerateDTO infoGenerate, Usuario usuario,
GerencialItemPainelDTO gerencialItemPainelAuxDto, Collection colParmsUtilizadosNoSQL, HashMap hshParameters, Collection colDefinicaoParametros, GerencialPainelDTO gerencialPainelDto, HttpServletRequest request) {
/*
* Document document = null; if ("L".equalsIgnoreCase(gerencialItemDto.getReportPageLayout())){ //Se Landscape document = new Document(PageSize.A4.rotate()); }else{ document = new Document();
* }
*
* PdfWriter writer = null;
*/
String caminho = "";
String caminho2 = "";
String caminhoHTML = "";
String caminhoRelativo = "";
try {
File arquivo = new File(infoGenerate.getCaminhoArquivosPdfs());
if (!arquivo.exists()) {
arquivo.mkdirs();
}
File arquivoVer = new File(infoGenerate.getCaminhoArquivosPdfs() + "/" + usuario.getIdUsuario());
if (!arquivoVer.exists()) {
arquivoVer.mkdirs();
}
caminho = infoGenerate.getCaminhoArquivosPdfs() + "/" + usuario.getIdUsuario() + "/"
+ UtilStrings.generateNomeBusca(UtilStrings.removeCaracteresEspeciais(gerencialItemDto.getDescription())) + ".pdf";
caminho2 = infoGenerate.getCaminhoArquivosPdfs() + "/" + usuario.getIdUsuario() + "/"
+ UtilStrings.generateNomeBusca(UtilStrings.removeCaracteresEspeciais(gerencialItemDto.getDescription())) + "2.pdf";
caminhoHTML = infoGenerate.getCaminhoArquivosPdfs() + "/" + usuario.getIdUsuario() + "/"
+ UtilStrings.generateNomeBusca(UtilStrings.removeCaracteresEspeciais(gerencialItemDto.getDescription())) + ".html";
// caminhoRelativo = br.com.citframework.util.Constantes.getValue("SERVER_ADDRESS") + br.com.citframework.util.Constantes.getValue("CONTEXTO_APLICACAO") + "/tempFiles" + "/" +
// usuario.getIdUsuario() + "/" + UtilStrings.generateNomeBusca(UtilStrings.removeCaracteresEspeciais(gerencialItemDto.getDescription())) + "2.pdf";
String urlInicial = "";
if (urlInicial == null || urlInicial.trim().equalsIgnoreCase("")){
urlInicial = Constantes.getValue("CONTEXTO_APLICACAO");
}
caminhoRelativo = urlInicial + "/tempFiles" + "/" + usuario.getIdUsuario() + "/"
+ UtilStrings.generateNomeBusca(UtilStrings.removeCaracteresEspeciais(gerencialItemDto.getDescription())) + "2.pdf";
arquivo = new File(caminho);
if (arquivo.exists()) {
arquivo.delete();
}
arquivo = new File(caminhoHTML);
if (arquivo.exists()) {
arquivo.delete();
}
//codigo abaixo necess�rio para tratar o encode nos servidores linux
FileOutputStream fOut = new FileOutputStream(arquivo);
String str = "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=ISO-8859-1\" >";
BufferedWriter out = null;
try {
out = new BufferedWriter(new OutputStreamWriter(fOut,"ISO-8859-1"));
} catch (Exception e) {
out = new BufferedWriter(new OutputStreamWriter(fOut));
e.printStackTrace();
}
out.write(str);
out.close();
/*
* FileOutputStream fHtml = new FileOutputStream(caminhoHTML); fHtml.write(strRetorno.getBytes()); fHtml.flush(); fHtml.close();
*/
// writer = PdfWriter.getInstance(document, new FileOutputStream(caminho));
// writer.setPageEvent(new EndPageControlBuffer(gerencialItemDto.getTitle(), colParmsUtilizadosNoSQL, hshParameters, colDefinicaoParametros, gerencialPainelDto));
// document.open();
// document.add(new Paragraph(gerencialItemDto.getTitle()));
// document.add(new Paragraph(" "));
} catch (Exception e) {
e.printStackTrace();
// handle exception
}
/*
* try { Html2Pdf.convert(document, caminhoHTML); } catch (DocumentException e) { e.printStackTrace(); }
*/
// document.close();
OutputStream os;
try {
os = new FileOutputStream(caminho);
Html2Pdf.convert(strRetorno, os);
os.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (DocumentException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
try {
PdfReader reader = new PdfReader(caminho);
Rectangle r = reader.getPageSizeWithRotation(1);
Document document = new Document(r);
PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(caminho2));;
if (gerencialItemPainelAuxDto != null && gerencialItemPainelAuxDto.getFile() != null && gerencialItemPainelAuxDto.getFile().equalsIgnoreCase("xmlsGerenciais/requisicoesProdutos/requisicoesProdGeral.xml")) {
document.setMargins(20, 50, 70, 0);
writer.setPageEvent(new EndPageGerencialControl(false, null, null, null, 0, null, gerencialItemDto.getTitle(), colParmsUtilizadosNoSQL, hshParameters, colDefinicaoParametros, gerencialPainelDto, request));
}else{
document.setMargins(50, 50, 70, 40);
writer.setPageEvent(new EndPageControlBuffer(gerencialItemDto.getTitle(), colParmsUtilizadosNoSQL, hshParameters, colDefinicaoParametros, gerencialPainelDto));
}
document.open();
int total = reader.getNumberOfPages() + 1;
for (int i = 1; i < total; i++) {
PdfImportedPage pageImport = writer.getImportedPage(reader, i);
Image image = Image.getInstance(pageImport);
image.scalePercent(94f);
document.add(image);
}
document.close();
} catch (Exception e) {
throw new ExceptionConverter(e);
}
/*
* try{ PdfContentByte over; PdfReader reader = new PdfReader(caminho); Document document = new Document(reader.getPageSizeWithRotation(1)); PdfStamper copy = new PdfStamper(reader, new
* FileOutputStream(caminho2));
*
* EndPageControl evt = new EndPageControl(gerencialItemDto.getTitle(), colParmsUtilizadosNoSQL, hshParameters, colDefinicaoParametros, gerencialPainelDto); document.open(); int total =
* reader.getNumberOfPages() + 1; for (int i = 1; i < total; i++) { over = copy.getUnderContent(i); over.beginText();
*
* Rectangle page = document.getPageSize();
*
* PdfPTable head = new PdfPTable(2); try { double tam1 = page.getWidth() * 0.17; double tam2 = page.getWidth() * 0.83;
*
* int tamX1 = (int) tam1; int tamX2 = (int) tam2; head.setWidths(new int[] {tamX1, tamX2}); } catch (DocumentException e1) { e1.printStackTrace(); } Image image = null; try { // URL url =
* this.servletContext.getContext("/").getResource("/imagens/logo.gif"); //URL url = this.getClass().getClassLoader().getResource("/imagens/logo.jpg"); URL url = new
* URL(Constantes.getValue("CAMINHO_LOGO_CITGERENCIAL")); if (url != null) { try { image = Image.getInstance(url); } catch (BadElementException e) { e.printStackTrace(); } } }catch
* (IOException ioe) { ioe.printStackTrace(); } if (image != null) { //image.scaleAbsolute(40, 54); image.scaleAbsolute(150, 84); image.setAlignment(Image.RIGHT); Chunk ck = new Chunk(image,
* -3, -60); PdfPCell c1 = new PdfPCell(); c1.addElement(ck); c1.setBorderWidth(0); head.addCell(c1); } else { //PdfPCell c1 = new PdfPCell(); head.addCell(""); }
*
* String strCab = Constantes.getValue("TEXTO_1a_LINHA_CABECALHO_CITGERENCIAL"); if (strCab != null && !strCab.equalsIgnoreCase("")){ PdfPCell cAux = new PdfPCell(new Phrase(strCab, new
* Font(Font.HELVETICA, 12, Font.BOLD, new Color(0, 0, 0)))); cAux.setBorderWidth(0); cAux.setHorizontalAlignment(PdfPCell.ALIGN_RIGHT); head.addCell(cAux);
*
* cAux = new PdfPCell(new Phrase("")); cAux.setBorderWidth(0); cAux.setHorizontalAlignment(PdfPCell.ALIGN_RIGHT); head.addCell(cAux); }
*
* PdfPCell cAux = new PdfPCell(new Phrase(gerencialItemDto.getTitle(), new Font(Font.HELVETICA, 14, Font.BOLD, new Color(0, 0, 0)))); cAux.setBorderWidth(0);
* cAux.setHorizontalAlignment(PdfPCell.ALIGN_RIGHT); head.addCell(cAux);
*
* //Trata parametros String strFiltro = evt.trataParameters(hshParameters, colParmsUtilizadosNoSQL, colDefinicaoParametros);
*
* PdfPCell cFiltro = new PdfPCell(new Phrase("")); cFiltro.setBorderWidth(0); cFiltro.setHorizontalAlignment(PdfPCell.ALIGN_RIGHT); head.addCell(cFiltro);
*
* cFiltro = new PdfPCell(new Phrase(strFiltro, new Font(Font.HELVETICA, 8, Font.NORMAL, new Color(0, 0, 0)))); cFiltro.setBorderWidth(0); cFiltro.setHorizontalAlignment(PdfPCell.ALIGN_RIGHT);
* head.addCell(cFiltro); //Fim - Trata parametros
*
* head.setTotalWidth(page.getWidth() - document.leftMargin() - document.rightMargin()); if (page.getWidth() > 600){ head.writeSelectedRows(0, -1, document.leftMargin(), 585, over); }else{
* head.writeSelectedRows(0, -1, document.leftMargin(), 825, over); }
*
* PdfPTable foot = new PdfPTable(2); String strSistema = Constantes.getValue("TEXTO_1a_LINHA_RODAPE_CITGERENCIAL"); if (strSistema != null && !strSistema.equalsIgnoreCase("")){ PdfPCell
* cAuxSistema = new PdfPCell( new Phrase(strSistema, new Font(Font.HELVETICA, 8, Font.NORMAL, new Color(0, 0, 0)))); cAuxSistema.setColspan(2); foot.addCell(cAuxSistema); }
*
* PdfPCell cAuxPageNumber = new PdfPCell( new Phrase("Emiss�o: " + UtilDatas.dateToSTR(UtilDatas.getDataAtual()) + " " + UtilDatas.formatHoraFormatadaStr(UtilDatas.getHoraAtual()), new
* Font(Font.HELVETICA, 8, Font.NORMAL, new Color(0, 0, 0)))); foot.addCell(cAuxPageNumber);
*
* cAuxPageNumber = new PdfPCell(new Phrase("Pagina: " + i, new Font(Font.HELVETICA, 8, Font.NORMAL, new Color(0, 0, 0)))); cAuxPageNumber.setHorizontalAlignment(PdfPCell.ALIGN_RIGHT);
* foot.addCell(cAuxPageNumber);
*
* foot.setTotalWidth(page.getWidth() - document.leftMargin() - document.rightMargin()); foot.writeSelectedRows(0, -1, document.leftMargin(), document.bottomMargin(), over);
*
* over.endText(); over.stroke(); } copy.close(); document.close(); } catch (Exception e) { throw new ExceptionConverter(e); }
*/
if(strRetorno!= null && strRetorno!=""){
return caminhoRelativo;
} else {
return null;
}
}
private String generateRetorno_Buffer(String strRetorno, GerencialItemInformationDTO gerencialItemDto, GerencialInfoGenerateDTO infoGenerate, Usuario usuario,
GerencialItemPainelDTO gerencialItemPainelAuxDto, Collection colParmsUtilizadosNoSQL, HashMap hshParameters, Collection colDefinicaoParametros, GerencialPainelDTO gerencialPainelDto, HttpServletRequest request) {
if(infoGenerate.getSaida().equalsIgnoreCase("PDF"))
return (String) generateRetornoPDF_Buffer(strRetorno, gerencialItemDto, infoGenerate, usuario, gerencialItemPainelAuxDto, colParmsUtilizadosNoSQL, hshParameters, colDefinicaoParametros, gerencialPainelDto, request);
return strRetorno;
}
public Object generateByQuestaoQuestionario(Integer idQuestaoQuestionario, Usuario usuario, GerencialInfoGenerateDTO infoGenerate) throws ServiceException {
return null;
}
}